unity의 awake
script 함수 실행 순서는 awake, onenable, start다.
이건 알고있던 건데 작업을 하다가 자꾸 awake에 에러가 나서 에러를 찾다보니
하이라키에서 활성화 되어 있는오브젝트에 비활성화로 달려있는 컴포넌트였다.
여기에 붙어있는 컴포넌트의 내용은 아래와 같다.
public class TestAwake : MonoBehaviour
{
void Awake() { Debug.Log("Awake"); }
void OnEnable() { Debug.Log("OnEnable"); }
void Start () { Debug.Log("Start"); }
void Update () { Debug.Log("Update"); }
}
똑같은 상태에서 TestAwake 컴포넌트의 active만 꺼 두면 어떻게 될까?
나의 예상과는 다르게 Awake는 무조건 호출이 된다.
Awake는 컴포넌트의 active 상태와 상관없이 호출이 되고 Start함수는 active 된 상태에서만 호출이 된다.
Awake 함수는 컴포넌트의 스크립트의 활성화 여부에 상관없이 컴포넌트의 오브젝트가 초기화 될 때 호출되기 때문이다.
그래서 위와 같이 컴포넌트의 오브젝트가 비활성화 되어 있으면 초기화가 안되어 컴포넌트 자체의 awake도 호출되지 않는다.
Reference Link
-
'Unity > Unity Study' 카테고리의 다른 글
ExecuteInEditMode (0) | 2017.09.13 |
---|---|
Inspector에서 AnimationCurve 버그 (0) | 2017.07.21 |
unity에서 shader를 짤때.. (0) | 2017.07.10 |
ARB_precision_hint_fastest (0) | 2017.07.10 |
The Magic Of Material Property Blocks (0) | 2017.06.23 |