"EventSystem.current.IsPointerOverGameObject()"
UI和3D场景同时都需要响应触摸事件,如果同时响应可能就会出现触摸UI的时候影响到了3D部分。为了解决这个问题在判断3D响应之前要先判断手指是否点击在UI上。
1 #if UNITY_ANDROID && !UNITY_EDITOR 2 #define ANDROID 3 #endif 4 5 6 #if UNITY_IPHONE && !UNITY_EDITOR 7 #define IPHONE 8 #endif 9 10 11 12 using UnityEngine; 13 using UnityEngine.UI; 14 using System.Collections; 15 using UnityEngine.EventSystems; 16 public class NewBehaviourScript : MonoBehaviour { 17 18 // Use this for initialization 19 void Start () { 20 21 } 22 23 24 void Update() 25 { 26 if (Input.GetMouseButtonDown(0)||(Input.touchCount >0 && Input.GetTouch(0).phase == TouchPhase.Began)) 27 { 28 #if IPHONE || ANDROID 29 if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) 30 #else 31 if (EventSystem.current.IsPointerOverGameObject()) 32 #endif 33 Debug.Log("当前触摸在UI上"); 34 35 else 36 Debug.Log("当前没有触摸在UI上"); 37 } 38 } 39 }
时间: 2024-10-27 13:37:01