UGUI下UI的点击和3D的点击与拖拽
来源:互联网 发布:创维酷开下载软件 编辑:程序博客网 时间:2024/06/04 08:47
在Unity5.0之后,NGUI的导入多少回带入一些错误,很多都是组件的问题,在unity4.6的时候,NGUI还是可以用的,不过现在ngui就显得越来越多余了,更多的人会去选择UGUI去搭建自己的UI。
在新的UI系统下,因为UI和3D物体都是在一个相机下渲染的,这样就出现UI上的点击和3D物体的点击冲突问题。当UI和3D问题重叠是,如何去判别呢。这边集合自己搜集的资料以及自己的想法。整理如下:
新版UI下,去掉了UI组件的碰撞,所以用射线检测 显然是行不通的。看UGUI的API可以发现,EventSystem有一个方法可以实现是否点击到UI,
using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityEngine.EventSystems;public class point : MonoBehaviour { void Update() { if (Input.GetMouseButtonDown(0)) { if (EventSystem.current.IsPointerOverGameObject()) { print("在UI上"); } else { print("不在UI上"); } } }}
这个方法测试过 是可以实现的。不过只是检测是否点击了UI,在很多情况下,这样的功能是不够用的,而且网上有的人测试这个方法还有bug,所以果断放弃这个方法。
后来后人想到一个方案 就是用PhysicsRaycaster+EventSystem 实现射线点击。方法如下:
1、先给相机添加PhysicsRaycaster组件:
这边可以选择相应的层,非常的方便好用。
2、在一个UI和3D的共存的场景中,添加相应的想要对3D物体操作的脚本到3D物体上。EventSystem 所有能在UI上添加的事件都可以用在3D物体,具体有哪些方法可以查看官方api。下面我以拖拽3D物体为例,代码比较简单,就不注释了,
using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityEngine.EventSystems;public class ObjCheck : MonoBehaviour ,IBeginDragHandler,IDragHandler{ public void OnBeginDrag(PointerEventData eventData) { print(eventData.pointerDrag.name); } public void OnDrag(PointerEventData eventData) { Vector3 worldPos; Vector3 screenpos = Camera.main.WorldToScreenPoint(transform.position); worldPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenpos.z)); transform.position = worldPos; }}
第二个方法就比较的实用,而且可以对3D物体实现很多的操作。而且对3D的操作也不影响UI的点击。我觉得是个很不错的方法。
0 0
- UGUI下UI的点击和3D的点击与拖拽
- ugui 点击在ui和非ui的判断
- unity3d 新UI系统UGUI点击与3D场景点击分离
- 关于UGUI挡道3D的物体触发点击事件无法和3D物体分离的解决方案
- Unity 点击屏幕与UGUI的区分
- 封装UGUI的点击事件
- UGUI的点击事件机制
- UGUI 不规则按钮的点击
- Unity-UGUI的点击接口
- UGUI UI点击穿透问题
- <Unity UGUI><EasyTouch> 使用EasyTouch, 摇杆在Dynamic模式下,点击UI控件也会弹出的问题解决
- 扩展下UI区域的点击范围
- ugui与ngui如何检测是否点击在UI上
- UGUI的点击事件的学习
- UGUI学习笔记(六) 获取到被点击的UI的信息
- Unity 4.6 uGUI的点击事件
- UGUI点击事件的简单封装
- 解决ugui穿透ui点击到游戏对象上的问题
- 女人的心
- HashMap的原理和使用
- 美医疗保险公司CareFirst被黑,110万用户信息泄露
- expect ssh首次登录自动判断(yes/no)?
- Xilinx网站资源导读
- UGUI下UI的点击和3D的点击与拖拽
- linux c 文件锁应用详解汇总
- 倒排文件(二):多特征倒排文件
- 如何学好java
- 征服 Mongodb 之 主从复制&集群复制
- ANSIC标准定义的6种预定义宏
- mysql使用说明
- jquery form表单重置
- Nginx 实战(一) 集群环境搭建