unity区分点击在3D物体还是2D UI上】的更多相关文章

当场景中的3D物体需要响应点击,但同时有UI显示时,存在判断点击是在3D物体上还是UI上的问题,办法如下: 1. 射线检测所有2D 3D物体,有2D物体被检测到时表明当前有UI.但无论Physics2D.Raycast()还是Physics.Raycast()都只能检测到含有Collider组件的物体,普通UI如Image Button等一般用射线是不起作用的.EventSystem.current.RaycastAll()可以将当前屏幕上的所有可检测的物体全部检测到,该方法需要自己构造一个Po…
Unity 版本:4.5 NGUI版本:3.6.5 参考链接:http://game.ceeger.com/Script/Camera/Camera.ScreenPointToRay.html,Uniyt圣典   http://www.unitymanual.com/blog-4392-1229.html,作者:游戏蛮牛 han1127   http://www.cnblogs.com/alongu3d/archive/2013/01/05/raycast1.html,博客园 梦想之家 1.3D…
注:这里的UI制作用的是NGUI插件 如题,在游戏中经常会遇到这种情况,场景中点击相关物体或者按钮弹出对应的2D界面,这时候除了2D界面上的可点击按钮等,应该屏蔽掉对3D场景的点击或者拖动事件. 在这里介绍两种方法: 1.对弹出的2D界面添加一个足够大的碰撞器,以覆盖整个屏幕: // 为道路信息面板添加碰撞器,以屏蔽弹出面板时鼠标对3D场景的点击事件 gameObject.AddComponent<BoxCollider>(); gameObject.GetComponent<BoxCo…
在ugui中创建一个canvas 之后会自动创建一个EventSystem,用来处理UI上的时间响应.(可以通过UI>EventSystem创建EventSystem) EventSystem 有三个组件:EventSystem.StandaloneInputModule.TouchInputModule,后面两个组件都继承自BaseInputModule. EventSystem组件主要负责处理输入.射线投射以及发送事件.一个场景中只能有一个EventSystem组件,并且需要BaseInpu…
看了很多朋友问怎么用一个3D物体做一个按钮,而且网上好像还真比较难找到答案, 今天翻了一下cocos源码发现Ray 已经封装了intersects函数,那么剩下的工作其实很简单了, 从屏幕的一个point 转化为 一条射线, 然后从一个3D物体拿到碰撞盒后调用intersects 就可以了. : void HelloWorld::onEnter(){ Scene::onEnter(); //添加一只3D的乌龟在场景, 作为一个按钮 auto orc = cocos2d::Sprite3D::cr…
想要在3D物体上实现全套事件监听处理: OnMouse系列 OnTrigger系列 OnPointer系列 OnDrag系列   1.在相机中添加Physics Raycaster组件 2.3D物体上挂在的脚本根据需要实现以下接口中的部分或全部: IPointerEnterHandler,IPointerDownHandler,IPointerUpHandler,IPointerExitHandler,IPointerClickHandler,IInitializePotentialDragHa…
通常来说,Unity自带的OnGUI不太好用,靠代码完成,在场景中无法直接编辑.所以,一般项目使用NGUI插件来做界面,但我这次要修改一个游戏,它没用NGUI,也没用OnGUI,而是使用类似NGUI的原理,采用Plane这种3D物体来做界面. 其实很简单,比如你需要一个按钮,就创建一个Plane,然后用对应的图片创建一个材质,给它贴上去就行了.这样只是显示了一张图片,要实现点击效果,还要在Update函数中捕获用户输入.我这里检测到输入时,先使用ScreenToWorldPoint函数来转换输入…
一.问题:当3D物体和UI元素重叠显示时一般UI元素会遮挡物体,这时点击UI元素响应时UI后方的物体也会响应. private void OnMouseDown() { ChangeColor(); } 3D物体使用OnMouseDown方法接收响应 public class ImageColor : MonoBehaviour,IPointerClickHandler public void OnPointerClick(PointerEventData eventData) { Change…
unity NGUI点击消息不传入到场景中去 1.今天遇到的问题是点击NGUI的按钮,场景中也相应了这个消息 解决的办法是在场景中需要互动的时候,也就是在update中进行判断 是否是点击了NGUI按钮! 加入了如下代码即可: if (UICamera.hoveredObject != null)       {           print("点击了NGUI");       } 发现网上说是UICamera.hoveredObject==null,亲测不是这样的,呵呵!…
u3d 鼠标点击位置,物体移动过去. U3d mouse clicks position, objects move past. 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com 鼠标点击位置,物体移动过去. 跟随鼠标移动.任意两点角度. Mouse click position, object moves past.Follow the mouse movement.Any two poi…