码迷,mamicode.com
首页 > 其他好文 > 详细

执行UI事件阻塞射线场景事件

时间:2015-07-11 13:27:41      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

Unity中鼠标点击NGUI UI时,同时会有射线碰撞到场景物件,从而执行其它表现。

那么问题来了怎么规避同时触发呢,

有个原则就是UI执行顺序第一

那么我们就讲讲主线程执行顺序

1、主线程结构

  

1 public class GameMain : MonoBehaviour
2  {
3         void Update () 
4     {    
5             NGUIManager.Instance.Update();
6             GameSceneManager.Instance.Update();
7             ....
8         }
9 }            

2、上面可以看出UI执行优先级高于其它逻辑,我们再看看UI逻辑

public bool RaycastHitUI(Vector3 positon)
{
	Vector3 pos = Camera.ScreenToViewportPoint(positon);

	if (pos.x < 0f || pos.x > 1f || pos.y < 0f || pos.y > 1f)
		return false;

	
	Ray ray = UI2DCamera.ScreenPointToRay(inPos);
	int mask = 1 << 20;
	float dist = (uiCamera.rangeDistance > 0f) ? uiCamera.rangeDistance : UI2DCamera.farClipPlane - UI2DCamera.nearClipPlane;
	if (Physics.Raycast(ray, out uiHit, dist, mask)) 
		return true;	
	return false;
}

  

所以执行了UI事件,后面逻辑不执行即可!

执行UI事件阻塞射线场景事件

标签:

原文地址:http://www.cnblogs.com/xiaojun1604/p/4638391.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!