UI 만들다보면
UI와 게임씬에 반응이 같이 될때가 있다.
아마도 입력 방식이 달라서 서로 다르게 받아들여서 그런것같기는 한데.
(아마 인게임은 Raycast 나 mouseButtonDown 같은 거일테고,
UI는 EventSystem에서 따로 받으니까)
그래서 UI를 터치할때는 인게임을 제외하고 싶을 때가 있다.
그때 쓰는 함수.
1
2
3
4
|
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5; text-decoration:none">Colored by Color Scripter
|
사실 이건
함수 이름에서도 알수 있듯이.
Ui에 올라가지 않을때
실행하는 함수다.
UI에 올라간것만 처리하는 거라면.
UI에서 이벤트를 받으니 신경쓸것없고 UI 오브젝트 위가 아니라면
실행된다.
참고로
UI에서는 따로 클릭 이벤트를 받는데.
받는 부분은 애초에 정해져있고.
Raycast Target 에서 받는다.
추가//
휴대폰(IPhone X)에서 확인했더니, 전혀 작동하지 않았다;
유니티 상에서는 문제없이 됬는데?
그래서 찾아본 결과
EventSystem.current.IsPointerOverGameObject() 함수가 파라메터(int)를 받는다!
1
2
3
4
5
6
7
8
9
10
11
12
|
int pointerID;
#if UNITY_EDITOR
pointerID = -1; //PC나 유니티 상에서는 -1
#elif UNITY_IOS || UNITY_IPHONE
pointerID = 0; // 휴대폰이나 이외에서 터치 상에서는 0
#endif
if (EventSystem.current.IsPointerOverGameObject(pointerID) == false)
{
//UI 상에서 클릭하지 않았을 때, 함수
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
확인 결과 작동 잘된다.
'Unity' 카테고리의 다른 글
[Unity3D] UGUI Text 문자열 색 바꾸기 (0) | 2020.04.10 |
---|---|
[Unity3D] Warning : OnLevelWasLoaded deprecated (0) | 2019.11.21 |
[Unity3D] 자식 오브젝트 찾기 (0) | 2019.06.26 |
[Unity3D] Random.Range 범위 (0) | 2019.06.14 |
[Unity3D] 게임 저장은 Json을 쓰기로... (0) | 2019.05.22 |