1. 스크립트 순서를 정하지 않고 실행했을 때
2. Edit -> Project Setting -> ScriptExcutionOrder에서 스크립트 순서를 지정했을 때
⬅️ 예상 Csv awake 와 Start출력 후 PlayerSelectUi의 Awake와 Start출력
⬅️ 출력
지정한 순서대로 Awake 먼저 실행 후
순서대로 Start를 실행한다.
https://docs.unity3d.com/kr/2019.4/Manual/ExecutionOrder.html
이벤트 함수의 실행 순서 - Unity 매뉴얼
Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.
docs.unity3d.com
⬅️ 유니티의 라이프사이클을 알고있었는데도 왜 Awake 전에 Start가 실행된다고 생각했을까 ? ㅎㅅㅎ
생각해보면 당연한 실행순서인데.....
<코드>
- CsvParent.cs
public abstract class CsvParent : MonoBehaviour
{
protected int _test;
private void Awake()
{
Debug.Log("Csv Parent 스크립트의 Awake");
}
private void Start()
{
Debug.Log("Csv Parent 스크립트의 Start");
F_setting();
}
public abstract void F_setting();
}
- AnimalCsv.cs
public class AnimalCsv : CsvParent
{
public override void F_setting()
{
Debug.Log("이 디버깅은 animalCsv입니다 ");
}
}
- PlayerSelectUi.cs
public class PlayerSelectUI : MonoBehaviour
{
private void Awake()
{
Debug.Log("PlayerSelectUI 스크립트의 Awake");
}
private void Start()
{
Debug.Log("PlayerSelectUI 스크립트의 Start");
}
}
3. MonoBehaviour를 상속받은 클래스를 상속받은 클래스의 이벤트 함수
: 위 스크립트에서 CsvParent는 MonoBehaviour를 상속받고있고, AnimalCsv는 CsvParent를 상속받고 있다.
여기서 AnimalCsv스크립트에 Awake()와 Start()를 추가하고 실행하게되면 ?
public class AnimalCsv : CsvParent
{
private void Awake()
{
Debug.Log("AnimalCsv 스크립트의 Awake");
}
private void Start()
{
Debug.Log("AnimalCsv 스크립트의 Start");
}
public override void F_setting()
{
Debug.Log("이 디버깅은 animalCsv입니다 ");
}
}
! 하위의 Awake()와 Start()만 실행된다!
상위의 Awake()와 Start()는 실행되지 않는다.
MonoBehaviour를 상속받은 클래스를 상속받은 클래스의 이벤트 함수 를 사용할 때는 이러한 점에 주의해야한다.
kimYouChae - Overview
클라이언트 개발자 지망생입니다! . kimYouChae has 6 repositories available. Follow their code on GitHub.
github.com
'Unity' 카테고리의 다른 글
[Unity] 맵 범위를 넘어가지 않는 카메라 구현 / Mathf.Clamp (0) | 2025.02.17 |
---|---|
[Unity] 씬 전환 (DontDestroyOnLoad) 오브젝트 Missing 문제 (0) | 2025.01.31 |
[Unity] Event System 이벤트 시스템 ( IPointerClickHandler 등 ) (1) | 2025.01.20 |
[Unity] 빌딩 시스템 만들기 #2. Snap & Build (0) | 2024.06.22 |
[Unity] 빌딩 시스템 만들기 #1. UI , Connector Data (1) | 2024.06.20 |