내일배움캠프 32일차 TIL : Unity Event

김정환·2024년 10월 29일
0

키워드

  • Unity Event

개인과제 중에 상호작용 오브젝트를 만들다가 막막한 부분이 생겨서 작성했다.

플레이어가 다른 오브젝트와 상호작용할 때
마우스 시점에 닿은 오브젝트에 상호작용 관련 메시지가 출력해야한다.
그리고 상호작용 키를 입력하면 해당 오브젝트의 상호작용 호출 메서드가 작동하면 된다.

여러가지의 상호작용을 만들려면
상호작용을 호출하는 메서드와 각각의 다른 내용의 상호작용이 분리되어야 한다.

그러다가 어떤 방식 생각나서 정리해보았다.

Unity Event

아래 이미지는 매우 자주 사용한 버튼의 OnClick 기능이다.

그리고 근래 자주 접하는 Player Input의 Invoke Unity Event 방식의 이벤트 창이다.

이름에서도 알 수 있듯이 Unity Event라는 기능을 이용한 방법들이다.
그리고 Unity는 참 고맙게도 사용자가 이 기능을 쓸 수 있도록 제공하고 있다.

public UnityEngine.Events.UnityEvent OnInteract;

간단하게 이 클래스를 선언하면

이렇게 인스펙터에서 버튼에 할당하듯 원하는 이벤트를 넣어줄 수 있다.
물론 그냥 코드에서 Action 선언하고 거기에 구독해도 된다.
사람 나름의 선호 방식이 있을테니까.

사용한 이유

  • 사용한 가장 큰 이유는 InteractableObject와 OnInteract에 메서드를 호출할 클래스는
    서로에 대해 전혀 몰라도 된다.
  • 상호작용 호출 메서드와 상호작용을 직접 수행하는 클래스는 서로 독립된 관계가 가능한 것이다.
  • 이 독립된 관계에서 서로 간의 호출은 개발자가 직접 할당해주는 번거로움이 있지만
    서로 간의 의존성은 기존에 Action에 구독한 방식보다 좀 더 줄어들거라고 생각했다.

회고

이번에 이걸 적어본 이유는 Unity에서 당연하게 표시된 기능들 중에 많은 것들이
실제로 개발자들이 사용할 수 있도록 제공하고 있는 경우가 많기 때문에 되새길 차원에서 적어보았다.

나중에 시간이 좀 남을 때 관련해서 쓸 수 있는 것들이 더 있는지 찾아보고
정리해보는 시간도 가져야겠다.

#내일배움캠프 #스파르타내일배움캠프 #스파르타내일배움캠프TIL

profile
사파 개발자

0개의 댓글