Ad Block 한번만 꺼주시면 안될까요..?
게임 개발/유니티

Unity) UI가 아닌 오브젝트에 대한 이벤트(클릭 등) (Event Trigger)

UniCoti(유니코티) 2024. 1. 20.

유니티에서 클릭 등에 반응하는 물체가 있다면 아마 70% 이상은 UI일 것이다.

하지만 30%에 준하는 프로젝트는 UI가 아닌 오브젝트에 클릭 등의 이벤트를 걸고 싶을 것이다.

이번 글에서는 UI가 아닌 오브젝트에 이벤트를 거는 방법에 대해 소개하겠다.

 

Event Trigger 컴포넌트 사진
Event Trigger


1. 기본 세팅

기본적으로 오브젝트를 클릭할 수 있도록 하려면 2가지의 기본 세팅이 필요하다.

첫 번째는 Event System이다. UI를 추가하면 자동으로 추가되는데

우리는 UI가 아닌 오브젝트를 사용할 것이기에 예외적인 상황으로 직접 추가해야 한다.

 

[UI] -> [Event System]
UI -> Event System

이렇게 추가해 주면 된다. [UI] -> [Event System]을 눌러서 Event System을 추가해 주자.

 

두 번째는 Physics Raycaster이다.

Physics Raycaster
Physics Raycaster

이걸 Camera에 추가해 주면 된다.

3d 환경의 물체를 클릭했을 때를 감지하려면 이걸 추가해줘야 한다.


2. Event Trigger의 기능과 사용

이번 글에서 소개할 기능의 주 역할을 하는 컴포넌트는 Event Trigger이다.

이 컴포넌트는 클릭, 드래그, 드롭 등 다양한 이벤트들을 처리하도록 도와준다.

[Add New Event Type] 버튼을 누르면, 다양한 이벤트 타입이 나오고 선택이 가능하다.

 

Add New Event Type을 누른 후 나오는 메뉴
이벤트의 종류

여기서 클릭이나, 드래그, 드롭, 스크롤 등의 이벤트를 선택할 수 있다.

 

Pointer Click을 추가한 Event Trigger
Pointer Click 이벤트를 추가한 모습

Pointer Click은 말 그대로 클릭했을 때 실행하는 이벤트이다.

Button 컴포넌트에 함수를 연결하듯 오브젝트를 선택하고

실행하고픈 함수를 선택하면 된다.

 

함수를 선택한 이후의 컴포넌트 모습
함수 선택 이후 모습

이렇게 연결해 주면 된다. 참고로 함수로 들어갈 수 있는 조건은 public이며, void형일 경우이다.

public void ClickFunc() {
    print("you clicked the cube!");
}

 

위 사진의 경우에서 연결한 함수는 이와 같다.

이렇게 하면 오브젝트를 클릭했을 때, 함수의 내용물인 "you clicked the cube!"가 출력된다.

 

큐브의 사진
이 큐브를 클릭하면 함수 실행!


여기까지 UI가 아닌 물체에 Event를 추가하는 방법에 대해서 알아보았다.

뭔가 마우스를 통해서 물체를 옮기는 작업이 필요하거나 하는 등의 상황에서

활용할 수 있다. 꼭 클릭과 드래그&드롭뿐 아니라 다양한 이벤트가 존재하니까

본인의 프로젝트의 방향에 맞춰서 적절히 활용하길 바란다.

 

+) 드래그&드롭을 쓰고 싶다면 드래그할 때의 함수, 드롭할 때의 함수로 나눠서 로직을 짜야한다.


이상으로 도움이 되었길 바라며,

 

끝.

댓글

💲 추천 글