본문 바로가기
프로그래밍/유니티

[Unity UGUI] 버튼을 누르고 있을 때 실행하기 (Event Trigger)

by 김시루시루르 2021. 9. 16.

UI상에서 버튼을 누르고 있을 때 특정 코드를 실행하기

옛날 옛~날에 유니티 처음 배울때 과제로 러닝게임(그런데 이제 소스가 거의 주어진)을 만드는 게 있었는데

기말과제가 그 소스나 코드 같은 걸 변형하고 추가해서 더 다듬어서 내는거였어요

그런데 주어진 소스에는 .. 버튼을 눌렀을 때 점프하는 방법은 있었지만

버튼을 누르고 있을 때 슬라이딩 하는 방법은 적혀있지 않았어

그래서 여러개 검색해보고 내린 결과가 이것입니다 여튼 유용하게 쓸 수 있습니다 슬라이딩이 아니더라도


Event Trigger 사용

제목에도 써뒀지만 저는 이벤트 트리거로 해결했습니다.

이벤트 트리거를 쓰면 여러 상황에 특정 함수를 실행할 수 있도록 만들 수 있는데요...

이벤트 트리거 컴포넌트를 추가하고, Add New Event Type를 선택해서 상황을 추가합니다.

정할 수 있는 상황은 이런식. 저는 벌써 PointerDown 하고 PointerUp을 설정해둬서 회색으로 나오네요.

 

이 중 "버튼을 누르고 있는 동안 슬라이드 상태"를 만들기 위해 전 이렇게 했습니다.

PointerDown, PointUp 이벤트 추가

PointerDown 이벤트에서 슬라이드 함수 호출

PointerUp 이벤트에서 평상시로 되돌리는 함수 호출

 

슬라이드 상태로 갈 때는 콜리더 크기를 세로가 긴 모양에서 가로로 긴 모양으로 수정한다든가,

캐릭터 스프라이트를 바꾼다든가 하는 함수를 썼고, 원래대로 돌릴 때도 비슷하게 했습니다.

 

이벤트 트리거에서 함수를 참조하는 방법은 버튼 UI의 참조와 같다고 보시면 되고,

그렇게 해서 이벤트 트리거를 써주시면 됩니다.

 

이벤트를 제거할 땐 이벤트 타입 오른쪽의 빼기 버튼을 눌러주시면 되고,

이벤트 타입 아래의 더하기 빼기 버튼으로 상황 하나에 여러 개의 함수를 실행하도록 할 수 있어요.

이걸 응용해서 UI의 트랜지션 - Sprite Swap을 코드로 칠 수도 있습니다

저는 트랜지션을 너무 늦게 알아서 (ㅋㅋ) 오히려 이벤트 트리거로 스프라이트 스왑을 했어요...

그것도.. 정리해서 올려야지

댓글