프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

유니티에서 마우스가 오브젝트에 진입하거나 클릭함에 따라 원하는 동작을 하게 만들고 싶은 경우 편리하게 사용할 수 있는 것이 IPointerHandler 인터페이스이다.

 

C#에서 인터페이스는 MonoBehaviour와 같이 상속하고 인터페이스 안에 존재하는 추상화 함수를 구현하면 사용할 수 있다.

 

대표적인 IPointerHandler는 오브젝트의 내부에 마우스 포인터가 들어왔는지 파악하는 IPointerEnterHandler이다.

이 인터페이스를 사용하기 위해서는 void OnPointerEnter() 함수를 구현해야한다.

 

오브젝트에 마우스 포인터를 올리면 윤곽선이 드러나는 코드를 살펴보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;
 
public class ElevatorManager : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public GameObject shadow;
 
    private void Start()
    {
        shadow.SetActive(false);
    }

    public void OnPointerEnter(PointerEventData eventData)
    {
        shadow.SetActive(true);
    }
 
    public void OnPointerExit(PointerEventData eventData)
    {
        shadow.SetActive(false);
    }
}
cs

 

 

일단 IPointerHandler를 코드에 불러오기 위해서 일단 UnityEngine.EventSystems using 선언해주자.

IPointerHandler 인터페이스의 추상 함수를 구현할 때 PointerEventData를 매개변수로 설정해주어야 한다.

 

이제 오브젝트에 코드를 적용하고 마우스를 올리면 shadow가 나타나고, 마우스를 내리면 shadow가 사라진다.

하지만, IPointerHandler가 작동하지 않는 경우 다음을 확인해보자.

 

1. 스크립트가 적용된 Object에 Box Collider/ Collider 2D component가 적용된 지 확인하자.

적용이 되었다면 해당 collider의 크기를 오브젝트에 맞게 변경해주어야 마우스 이벤트가 제대로 동작한다.

 

2. UI 생성 시 같이 생성되는 EventSystem 오브젝트가 Scene안에 생성되었는지 확인하자.

 

3. Camera에 Physics Raycaster Component가 부착되어 있는지 확인하자.

 

 

 

IPointerHandler에는 마우스로 드래그하거나 클릭하는 동작도 감지할 수 있으므로 자세한 내용은 아래를 확인해보자.

 

 

https://docs.unity3d.com/kr/530/Manual/SupportedEvents.html

 

유니티 - 매뉴얼: 지원하고 있는 이벤트

지원하고 있는 이벤트 Eventsystem은 많은 이벤트를 지원하고 있으며, InputModule을 작성하여 사용자 정의 할 수 있습니다. 이벤트는 인터페이스가 제공하는 StandaloneInputModule과 TouchInputModule에 지원되

docs.unity3d.com

 

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함