20231227_IPointer Interface

2023. 12. 27. 21:55IT/TIL

오늘의 TIL은 개인과제를 진행하면서 공부했던 유니티에서 사용할 수 있는 IPointer Interface에 관한 내용이다.

 

오늘 공부하면서 사용했던 IPointer Interface는

IPointerClickHandler

IPointerEnterHandler

IPointerExitHandler

의 세 가지인데

 

사용한 이유는 유니티에서 Button을 사용하면서, Button에 마우스를 호버하는 경우에 이벤트를 만들기 위해서 사용했는데,

 

게임의 컨셉에서 위와 같은 책장 같은 이미지를 Start Scene에서 사용하고,

 

각 버튼에 마우스를 호버하는 경우에 책을 빼는 듯한 효과를 주려고 하여서 찾아보고 사용하게 되었다.

 

Button의 기능에 있는 Sprite Swap이나 Animation을 사용할 수도 있었지만,

 

구글링해본 결과, IPointer Interface라는게 있어서 사용해보는 것이 좋을 것 같아 사용하게되었다.

 

IPointer Interface

주의사항 - Hierarchy에 EventSystem이 존재하여야한다.

(씬을 여러개 만들면서 해당하는 기능들을 생성하지 않고 복사했더니 EventSystem이 생성되지 않아

 버튼도 작동되지 않고 IPointer Interface의 기능들이 작동하지 않았었다)

 

이번에 사용한 Interface들은 세가지로 하나씩 정리하면,

 

IPointerClickHandler - OnPointerClick

마우스의 클릭을 감지하는 것으로,

의 형식으로 작성할 수 있으며,

이번 과제에서는 시작, 로드, 콜렉션, 종료 버튼을 누르는 경우에 작동하게 할 수 있었으나,

이 기능은 Button의 OnClick() 이벤트를 사용하는 것으로 수정하였다.

public void OnPointerClick(PointerEventData eventData)
{

}

의 형식으로 작성할 수 있다.

 

 

IPointerEnterHandler - OnPointerEnter

마우스가 해당하는 버튼에 들어오는(호버되기 시작하는) 것을 감지하는 것으로,

이전에 공부했었던 OnTriggerEnter나 OnCollisionEnter와 비슷한 느낌으로 볼 수 있다.

따라서 이 부분에서 내가 원하는 애니메이션이나 동작을 실행시키면 된다.

public void OnPointerEnter(PointerEventData eventData)
{

}

의 형식으로 작성할 수 있다.

 

 

IPointerExitHandler - OnPointerExit

Enter와 반대되는 개념으로 마우스가 해당 버튼에서 나가는(호버가 끝나는) 것을 감지하는 것으로,

OnTriggerExit, OnCollisionExit와 비슷한 느낌으로 볼 수 있다.

따라서 이 부분에서 내가 원하는 애니메이션을 종료시키거나, 동작을 원상태로 돌리면 된다.

public void OnPointerExit(PointerEventData eventData)
{

}

의 형식으로 작성할 수 있다.

 

 

따라서 실제로 스크립트를 만들어보면 아래와 같이 만들 수 있다.

MonoBehaviour 옆에 Interface로 많이 달려있는 것을 볼 수 있다.

public class StartSceneButton : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
{
    private bool isHovering = false;

    public void OnPointerClick(PointerEventData eventData)
    {
    	ToggleHovering();
    }

    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("Pointer Enter");
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        Debug.Log("Pointer Exit");
    }

    public void ToggleHovering()
    {
    
    }

 

'IT > TIL' 카테고리의 다른 글

20231229_Queue, Stack  (0) 2023.12.29
20231228_Coroutine  (0) 2023.12.28
20231226_달리기 경주(프로그래머스)  (0) 2023.12.26
20231224_개인정보 수집 유효기간(프로그래머스)  (0) 2023.12.24
20231222_NavMesh  (0) 2023.12.23