[Unity] Event와 Delegate

Delegates and Events in Unity

얼마전 포스팅 했던 김포프님의 유니티 게임오브젝트 비디오에서 이야기 했던 부분 중 하나이다. 유니티는 C#을 이용하여 (그외에 JS를 모방한 자체 스크립트도 있지만…) 코드의 성능보다는 코드의 가독성과 독립성(? 코드간의 상호 의존성을 낮추는 것을 이야기 하는 것이다. 직접적인 접근을 피해 상호의존성을 낮춰서 혹시 수정했을 때 다른 곳에서 버그가 터지는 어리둥절한 일을 막기 위해서… 뒤로 넘어져서 코가 깨지는 거랑 같은 상황?)을 보장한다고 생각한다.(내 개인적으로… 애초에 프로그래밍적 지식이 없거나 적은 사람이 쉽게 게임을 제작하거나 할 수 있도록 하기 위해 만들어진 엔진이라고 한다.)

이벤트와 델리게이터는 직접 사용해 보지는 않았지만, 코코스를 사용하면서 어림잡아 알고 있는 대략적인 작동방식은(틀릴 수도 있다. 그냥 추측일 뿐…) 델리게이터는 특정 이벤트에 대한 리스너라고 볼 수 있다. 업데이트 문에 직접적으로 발생할 이벤트에 대한 트리거를 넣고 코드를 때려 넣어서 이벤트가 10개면 각종 트리거와 동작소스들로 엉키게 하는 것을 막고자 하는 것이다. 결국 동작 부분에서는 다를게 없겠지만 코드가 훨씬 깔끔해 질 수 있다는 거지. 특정 이벤트가 특정 델리게이터를 동작하게 할 것이다. 그럼 이벤트 종류별로 델리게이터를 분리 할 수 있을 것이고 혹시나 추가할 이벤트가 있다면 그 타입의 이벤트를 다루는 델리게이터쪽에서 추가하면 될 것이다.

아직 규모가 있는 프로그래밍을 해보지 않은 사람들은 그게 왜 필요하지? 그냥 하나에 다 박아 넣고 하나의 스크립트로 관리하면 되지라고 생각할 수 있겠지만(혹은 기억력이 좋아서 자신이 친 수천줄이 넘어가는 코드의 위치와 동작방식을 다 기억한다면…) 각종 이벤트가 100여개가 넘어가게 된다면 어찌될까? 그리고 1년 뒤 거기에서 쓰이지 않는 이벤트 몇개를 제거하고 다시 새롭게 더해진 이벤트 몇개를 추가하는 작업을 해야한다면?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s