본문 바로가기
C#

[C#][Unity] On Click()에 대해서.

by teamnova 2021. 8. 23.

안녕하세요!!

오늘 포스팅 할 내용은 Unity의 On Click() 입니다!

Unity는 다양한 이벤트를 처리하기 위한 인터페이스를 제공하며, 이벤트가 발생하면 호출이 되도록 구성됩니다.

클릭, 키보드 입력, 터치 등이 이벤트등이 이것에 해당됩니다.

오늘은 그 중에서 Unity에서 제공되는 UI에서 기본적으로 가지고 있는 OnClick()에 대해 알아보겠습니다!

Unity는 상호작용이 가능한 UI들을 지원해주고 있는데, 상호작용이 가능한 UI들은 Inspector 창에 On Click()을 가지고 있습니다. 

위 와 같이 버튼을 생성하면 On Click()이 생성되어 있는 것을 확인 할 수 있습니다. 

이제 이벤트 시스템을 관리 할 빈오브젝트를 만들고 오브젝트 안에 EventManager란 Script를 추가해 주겠습니다.

그리고 오브젝트를 On Click에 등록해주고 함수를 지정해주면 끝!! On클릭이벤트는 이렇게 간단하게 구현이 가능합니다!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EventManager : MonoBehaviour
{
    public void ButtonClick() //버튼 클릭 이벤트에 대한 함수를 만들어 준다.
    { 
    
    }
}

 

이런식으로 만들어진 함수에 대해서 이벤트를 지정해 주면 클릭 시 이벤트가 발생하여 동작하는것을 볼 수 있습니다!

 

그렇다면 On Click() 이 존재하지 않는 UI는 어떻게 이벤트를 지정해 줘야 할까요?

유니티는 그런 이벤트에 대한것들도 지원 해 주고있는데요. 

 

EventManager의 함수를 새로 구성해 보겠습니다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EventManager : MonoBehaviour
{
    public void IPointerEnterHandler() {
        //OnPointerEnter 포인터가 오브젝트 안에 들어갈때 오출
    }
    public void IPointerExitHandler()
    {
        //OnPointerExit 포인터가 오브젝트 에서 나올때 호출
    }
    public void IPointerDownHandler()
    {
        //OnPointerDown 포인터가 오브젝트 위에서 눌렸을 때 호출
    }
    public void IPointerUpHandler()
    {
        //OnPointerUp 포인터를 오브젝트 에서 뗄 때 호출
    }
    public void IPointerClickHandler()
    {
        //OnPointerClick 동일 오브젝트에서 포인터를 누르고 뗄 때 호출
    }
    public void IInitializePotentialDragHandler()
    {
        //OnInitializePotentialDrag 드래그 타겟이 발견되었을대 호출, 값을 초기화 할 때 사용할 수 있음.
    }
    public void IBeginDragHandler() {
        //OnBeginDrag 드래그가 시작되는 시점에 드래그 대상 오브젝트에서 호출.
    }
    public void IDragHandler() {
        //OnDrag   드래그 오브젝트가 드래그되는 동안 호출
    }
    public void IEndDragHandler()
    {
        //OnEndDrag   드래그가 종료됐을 때 드래그 오브젝트에서 호출
    }
    public void IDropHandler()
    {
        //OnDrop  드래그를 멈췄을 때 해당 오브젝트에서 호출
    }
    public void IScrollHandler()
    {
        //OnScroll  마우스 휠을 스크롤했을 때 호출
    }
    public void IUpdateSelectedHandler() {
        //OnUpdateSelected 선택한 오브젝트에서 매 틱마다 호출
    }
    public void ISelectHandler()
    {
        //OnSelect  오브젝트를 선택하는 순간 호출
    }
    public void IDeselectHandler()
    {
        //OnDeselect   선택한 오브젝트를 선택 해제할 때 호출
    }
    public void IMoveHandler()
    {
        //OnMove   이동 이벤트(왼쪽, 오른쪽, 위쪽, 아래쪽 등)가 발생했을 때 호출
    }
    public void ISubmitHandler()
    {
        //OnSubmit    전송 버튼이 눌렸을 때 호출
    }
    public void ICancelHandler()
    {
        //OnCancel    취소 버튼이 눌렸을 때 호출
    }

}

 

이런식으로 OnClick()을 지원 하지 않는 UI들도 이벤트를 지원해 줌으로써 같은 역할을 할 수 있는 오브젝트로 만들어 줄 수 있다는 사실!

그렇다면 다음시간엔 저 함수 들로 어떤 이벤트들을 만들어 낼 수 있을지에 대해 포스팅 해보도록 하겠습니다! 

 

그럼 저는 20000!!!

 

아참... 이 자료는 스틱코드의 글을 참고하여 만들어 졌습니다!

https://stickode.com/detail.html?no=2355