unity3d 3D UI响应事件点击
场景设置: 对应相机上挂载 Physics Raycaster 组件:
方法一:OnMouseDown
1.给 UI 加上碰撞体: 2.在 CubeClick 脚本实现 OnMouseDown 函数的:
方法二: IPointerClickHandler
如果 3D 物体被 UI 遮挡,可以通过 UI 上的控件向下传递事件的方式,实现事件的响应:
UI 物体上实现方法:
public class UIClick : MonoBehaviour, IPointerClickHandler { public void OnPointerClick(PointerEventData eventData) { List<RaycastResult> raycastResults = new List<RaycastResult>(); EventSystem.current.RaycastAll(eventData, raycastResults); foreach (var raycastResult in raycastResults) { if (raycastResult.gameObject != gameObject) { ExecuteEvents.Execute(raycastResult.gameObject, eventData, ExecuteEvents.pointerClickHandler); } } Debug.Log("ui click"); } }
3D 物体上实现方法:
public class CubeClick : MonoBehaviour, IPointerClickHandler { private void OnMouseDown() { Debug.Log(nameof(OnMouseDown)); } public void OnPointerClick(PointerEventData eventData) { Debug.Log("Cube Click"); } }
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
常见的嵌入式操作系统有哪些