C
unity Awake and Start
unix
2023. 4. 27. 16:58
Start와 Awake 함수는 스크립트가 실행될 때 자동으로 호출되는 함수입니다.
Awake 함수는 스크립트 컴포넌트가 비활성화된 경우에도 먼저 호출되므로 스크립트와 초기화 사이의 레퍼런스 설정하는데에 많이 활용합니다.
Start는 Awake 가 호출된 후 첫번째 Update 직전에 호출되지만 스크립트 컴포넌트가 활성화된 경우에만 호출됩니다.
즉, 스크립트 컴포넌트를 활성화하고 Start를 활성화해서 작업을 처리할 수 있습니다.
이런 식으로 초기화 코드의 시작을 정말 필요로 할 때까지 지연시킬 수 있습니다.
예를 들어 적 캐릭터가 게임에 진입하고 Awake를 사용해서 적에게 일정한 탄약을 할당하지만
스크립트 컴포넌트를 활성화하고 Start를 사용해 정해진 타이밍에만 사격이 가능하게 만들 수 있습니다.
Start와 Awake는 오브젝트에 연결된 스크립트가 실행되는 동안에 단 한번만 호출됩니다.
using UnityEngine;
using System.Collections;
public class AwakeAndStart : MonoBehaviour
{
void Awake ()
{
Debug.Log("Awake called.");
}
void Start ()
{
Debug.Log("Start called.");
}
}
위의 스크립트를 게임 오브젝트에 할당하고
비활성화한 채로 play하게 되면 Awake called. 문구만 뜹니다.
활성화하고 play하게 되면 Awake called. 이후 Start called. 문구가 콘솔에 출력됩니다.
이것이 유용한 이유는
오브젝트 설정을 초기화한 후 스크립트를 활성화할 수 있어서 스크립트를 여러 파일로 쪼갤 필요가 없기 때문입니다.