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


    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事件,后面逻辑不执行即可!

  • 相关阅读:
    (转)堆与堆排序
    Cantor的数表
    Sticks(poj 1011)
    Square(hdu 1511)
    Fire Net(hdu 1045)
    Lake Counting(poj 2386)
    Ants (POJ 1852)
    A + B Problem II 大数加法
    深入理解计算机系统第二版家庭作业2.66
    C++ 队列queque/deque
  • 原文地址:https://www.cnblogs.com/xiaojun1604/p/4638391.html
Copyright © 2020-2023  润新知