UI和3D场景同时都需要响应触摸事件,如果同时响应可能就会出现触摸UI的时候影响到了3D部分。为了解决这个问题在判断3D响应之前要先判断手指是否点击在UI上。 以前NGUI的时候都是自己来发送射线判断,现在UGUI好了系统提供了更为简便的方法。
using
UnityEngine
;
using
UnityEngine
.
UI
;
using
System
.
Collections
;
using
UnityEngine
.
EventSystems
;
public
class
NewBehaviourScript
:
MonoBehaviour
{
// Use this for initialization
void
Start
(
)
{
}
void
Update
(
)
{
if
(
Input
.
GetMouseButtonDown
(
0
)
||
(
Input
.
touchCount
>
0
&&
Input
.
GetTouch
(
0
)
.
phase
==
TouchPhase
.
Began
)
)
{
#if IPHONE || ANDROID
if
(
EventSystem
.
current
.
IsPointerOverGameObject
(
Input
.
GetTouch
(
0
)
.
fingerId
)
)
#else
if
(
EventSystem
.
current
.
IsPointerOverGameObject
(
)
)
#endif
Debug
.
Log
(
"当前触摸在UI上"
)
;
else
Debug
.
Log
(
"当前没有触摸在UI上"
)
;
}
}
}