유니티

이벤트 사용에 있어 주의 점

bugmin 2024. 8. 19. 18:30

이벤트는 매우 편리하다 이벤트 발생 시에 구독되어있는 함수들을 한 번에 수행할 수 있기 때문이다.

 

하지만 동시에 주의해야할 점들이 있다.

 

먼저 Monobehaviour를 상속받아 오브젝트에 부착될 스크립트일 경우 

 

구독해제에 대해 신경을 써줘야한다.

 

구독해제를 안한 것이 어떨 때 문제가 되냐면

 

오브젝트가 구독해제를 안한 상태로 파괴가 됐는데 이벤트 호출을 하면 Null 오류가 뜨게 된다. 

 

또 하나 알아둬야할 것은 람다식의 경우 이벤트 구독 해제가 안된다. 

 

이벤트로 람다식을 구독시키는 것은 매우 편리한 것을 알지만 구독해제가 안되니 되도록 사용하지 않거나 굳이 써야한다면 Monobehaviour를 상속받지 않는 클래스에서 사용하는 것이 좋아보인다.

 

이번 프로젝트에선 전역으로 사용할 수 있는 이벤트 매니저를 만들어 관리를 했었는데 이것이 성능적으로 일반적인 이벤트를 사용하는 것과 어느정도 성능 차이가 나는지는 좀 더 확인이 필요해보인다.

 

전역으로 만들었을 때 장점은 모든 이벤트 상황에 대해서 하나의 스크립트서 관리하기 때문에 IDE 기능을 통해 쉽게 찾아갈 수 있다는 점이다. 이는 디버깅이 힘들다는 이벤트의 단점을 조금은 상쇄를 시켜준다.

 

차후 글에 성능 비교와 함께 전역 이벤트 매니저에 대한 글을 작성을 할 계획이다.