유니티(Unity)의 Awake와 Start

유니티에는 생성자로 사용할 수 있는 메소드가 두 개 있는데, Awake와 Start입니다. 대부분 사람들은 다른 객체에 어떤 행동을 내리는 건 Start에서 하고, 그렇지 않은 것은 Awake에서 하라고 조언합니다. 하지만, 실제로 사용하다 보면 애매모호할 때가 많습니다. 저는 다음과 같은 이유로 Start보다 Awake에서 초기화하는 것을 좋아합니다.

첫째, 객체 생성 후에 어떤 처리를 즉시 해야 할 때, 초기화 처리가 Start에 있으면 불가능하기 때문입니다.

둘째, 오브젝트 풀링(object pooling) 사용 시 Start를 이용해 초기화하기 어렵기 때문입니다. 오브젝트 풀링(object pooling)을 사용하면 OnEnable에서 객체를 다시 초기화시켜야 하는데, OnEnable은 Start보다 먼저 불립니다. 따라서 Start에 어떤 초기화 처리를 넣기 어렵습니다. 그래서 Start 대신에 Awake를 생성자로 사용하고, OnEnable에서 재초기화를 하게 됩니다.

유니티의 Awake와 Start는 순서 때문에 문제가 많습니다. 제가 유니티 제작자라면, 이 문제를 좀 더 깔끔하게 해결하려고 했을 것입니다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중