2023. 12. 27. 21:55ㆍIT/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 |