Unity

유니티 버튼 누르자마자 동작하기 (EventTrigger 스크립트 연결)

하길 2024. 6. 17. 23:51

1. 발생 문제

유니티에서 UI Button은 클릭 후 마우스를 때야지만 동작하게 되어있습니다.

 

이는 위와 같이 버튼을 누르자마자 플레이어가 점프를 해야하는 게임에서는 치명적일 수 있습니다.

 

2. 해결 방안

- 해결 방법은 크게 2가지가 있습니다.

1. IPointerClickHandler, IPointerDownHandler, IPointerUpHandler 등의 포인터 입력을 감지하는 인터페이스를 활용한다.

2. EventTrigger를 사용하여 포인터 입력에 따라 함수를 호출한다.

 

저는 2번 방법 EventTrriger를 사용하여 포인터 입력을 감지한 뒤 점프 함수를 호출해서 문제를 해결해 보겠습니다.

 

 

- 해결 방법은 아래와 같습니다.

1. EventTrigger 컴포넌트를 선언 후 인터페이스에서 EventTrigger 컴포넌트 연결

2. EventTrriger.Entry 객체인 jumpEventEntry를 생성

3. jumpEventEntry.evnetID = EventTriggerType.PointerEnter로 지정 (눌렀을 때 바로 동작하는 타입)

4. jumpEventEntry.callback.AddListener((data) => _playerController.Jump()), 버튼이 눌렸을 때 플레이어가 점프하는 함수를 호출하도록 람다식으로 연결

5. _jumpButton_EventTrigger.triggers.Add(jumpEventEntry), 점프버튼 이벤트 트리거 컴포넌트의 triggers목록에 

만들어둔 jumpEventEntry를 추가해줌.

 

 

3. 마무리

 

이제 버튼을 누르자마자 플레이어가 바로 점프하는 것을 확인할 수 있습니다.