在Canvas上创建一个脚本。
先添加两个关于UI的命名空间
using UnityEngine.UI;
using UnityEngine.EventSystems;
在添加EventSystem和GraphicRaycaster
EventSystem eventsystem;
public GraphicRaycaster RaycastInCanvas;
在Update中写一个判断
void Update()
{
//如果先接触的是UI就return 不执行额外点击事件
if (CheckGuiRaycastObjects())
return;
}
bool CheckGuiRaycastObjects()
{
PointerEventData eventData = new PointerEventData(eventsystem);
eventData.pressPosition = Input.mousePosition;
eventData.position = Input.mousePosition;
List<RaycastResult> list = new List<RaycastResult>();
RaycastInCanvas.Raycast(eventData, list);
return list.Count > 0;
}
可以写其他逻辑