객체의 실행 순서를 설정합니다.

7563 단어 Unity

하고 싶은 일


사격을 예로 들면, 아래의 처리를 임의의 순서로 실행하기를 희망한다.
 1. 모바일 유저.
 2. 적들이 총알을 생성하다.
 3. 당첨 판정을 집행하다.

기본 처리 순서 정보


Unity에서 다음과 같은 이벤트 함수(정의만 하면 자동으로 호칭되는 함수)의 실행 순서가 정해지지 않았습니다.
・Awake
시작하다
업데이트

처리 순서 변경(상속 없음)


테스트로 동일한 이름의 객체에 다음 클래스, Objecta, B, C를 첨부합니다.
(정확히 말하면 Unity를 다시 시작할 시기)
public class ObjectA : MonoBehaviour
{
    DateTime dt;
    void Awake() {OutLog("Awake"); }
    void Start() {OutLog("Start"); }
    void Update() {OutLog("Update");}
    void OutLog(string funcName)
    {
        dt = DateTime.Now;
        Debug.Log(name + " - " + funcName + " : <frame/time>" + Time.frameCount + "/" + dt.Second + "." + dt.Millisecond);
    }
}

스크립트의 실행 순서를 설정합니다.


아래 사이트지만
· 스크립트 파일에서 [검사기 -> 주문 실행] 을 선택합니다.
/다음 그림과 같이 낮은 값에서 낮은 값으로 Default Time에 스크립트를 추가합니다.

기본 시간


・ 공식 참조에서 기본 시간에 대한 정의를 찾을 수 없습니다.
・ 시도에서 설정된 수치는 10000 각도로 설정되지만 실행이 특별히 지연되지 않기 때문에 초나 밀리초가 아니라 단순한 순서 번호로 처리됩니다.

처리 순서 변경(상속)


실제로 게임을 만들다 보면 다태주의를 이용하려는 경우가 생긴다.
예를 들어 적을 파생시킨 적 1류, 적 2류...
이 모든 파생류에 대해 처리 순서를 설정하면 골치 아프다.
따라서 기본 클래스에서만 처리 순서가 정확하고 유효한지 시험해 보세요.
public class Prefub : MonoBehaviour
{
    public GameObject enemyPrefub;
    public GameObject playerPrefub;

    public void Start()
    {
        GameObject enemy;
        GameObject player;

        // Player A,B,C / Enemy A,B,Cを動的に生成する。
        enemy = Instantiate(enemyPrefub);
        enemy.AddComponent<EnemyC>();
        player = Instantiate(playerPrefub);
        player.AddComponent<PlayerC>();
        enemy = Instantiate(enemyPrefub);
        enemy.AddComponent<EnemyB>();
        player = Instantiate(playerPrefub);
        player.AddComponent<PlayerB>();
        enemy = Instantiate(enemyPrefub);
        enemy.AddComponent<EnemyA>();
        player = Instantiate(playerPrefub);
        player.AddComponent<PlayerA>();
    }
}

결과


(EnemyC -> PlayerC -> EnemyB -> PlayerB -> EnmeyA -> PlayerA)
업데이트()는 예상한 결과가 아닌 생성과 같은 순서로 호출됩니다.

결론


당분간 Enemy는 Enemy Manager로, Player는 Player Manager로 통합됩니다.
PlayerManager->Update, EnemyManager->Update 및 객체 범주에 따라 처리하면 일시적으로 해결할 수 있습니다.

웹 페이지 정보


[Unity] 대상 순서대로 처리하려면 스크립트의 실행 순서를 지정합니다.
이벤트 함수
이벤트 함수의 실행 순서
Script Execution Order Settings
[이해했다!]스마트폰을 위한 유니티 스크립트 실행 순서의 수수께끼

좋은 웹페이지 즐겨찾기