IT/UNITY(C#)
(C#) UNITY_ UI위에 있을때 인식하기 (UI클릭시 다른 함수 작동을 막는 방법)
KS짱짱맨
2020. 2. 14. 23:33
오늘도 ㅋㅋㅋ 피곤하다.. 그래서 정말 한개만 배웠다.
오늘 배운내용은 UI버튼 등 이벤트를 발생시키는 곳에 마우스커서가 올라갔을때를 인식해 주는 코드이다.
오늘 배운것으로 할 수 있는것
- UI버튼 클릭할때, 다른 함수가 실행되지 않게 할 수 있다.
예를들면, 클릭으로 물건을 생성하는 함수가 있다고 하자
//클릭했을때, money가 50보다 작으면 prebCoffee를 mousePosition에 생성
public void ClickAction()
{
if (Input.GetMouseButtonDown(0))
{
if(money >= 50)
{
Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Instantiate(prebCoffee, mousePosition, Quaternion.identity);
money = money - (long)50f;
}
}
}
이 함수를 아래와 같이 Update함수에 넣어두면,
void Update()
{
ClickAction();
}
내가 다른 UI버튼을 클릭 할때도 계속 원치 않는 coffee를 만들어 낼 것이다.
그렇게 되면 아이템 몇번 옮기고 난후, 바닥에 coffee들이 난무하는 상황이 발생하게된다.
이 때!! 사용하는 것이 바로 아래에 있는 메서드다.
이렇게 EventSystem에서 IsPointerOverGameObject라는 함수를 이용해,
마우스 커서가 UI버튼 위에 없을 때만
작동 할 수 있도록 할 수 있다. (Yeah!!)
Using UnityEngine.EventSystems; //이걸 꼭 해야함.
void Update()
{
//UI위에 커서가 있을때 = ture/ 따라서 UI위에 커서가 없을때만 ClickAction함수를 실행
if (EventSystem.current.IsPointerOverGameObject() == false)
{
ClickAction();
}
Showmethemoney();
}
728x90