프로젝트의 볼륨이 커지다 보면 각각의 Start()
메서드에 관한 실행 순서를 지정하고 싶어질 때가 생기게 된다.
예를 들면 A 컴포넌트의 Start()
메서드에서 B컴포넌트의 변수를 참조할 때, B 컴포넌트의 Start()
메서드에서 데이터가 세팅되어 있지 않으면 널 오류를 발생시킨다.
코루틴 스타드를 이용해 이를 간단하게 해결할 수 있다.
평소에 사용하던
private void Start()
{
...
}
대신 다음과 같이 사용하면 된다.
private IEnumerator Start()
{
yield return new WaitUntil(() => isActiveAndEnabled);
yield return new WaitUntil(() => PlayerName != null);
playerNameLabel.text = playerNameLabel.ToString();
}
void
대신 코루틴을 사용할 수 있는 함수들은 Start()
를 제외하고 몇 가지가 더 있다. 주로 딜레이 혹은 조건을 지정해야 하는 상황이 존재하는 메소드들이다.OnBecameInvisible()
과 같은 렌더링에 관련된 함수들OnCollisionEnter()
과 같은 물리법칙에 따른 함수들OnMouseEnter()
과 같이 입력에 따른 함수들