Unity 彈出界面時屏蔽對3D場景的點擊


  注:這里的UI制作用的是NGUI插件

  如題,在游戲中經常會遇到這種情況,場景中點擊相關物體或者按鈕彈出對應的2D界面,這時候除了2D界面上的可點擊按鈕等,應該屏蔽掉對3D場景的點擊或者拖動事件。

  在這里介紹兩種方法:

  1、對彈出的2D界面添加一個足夠大的碰撞器,以覆蓋整個屏幕:

// 為道路信息面板添加碰撞器,以屏蔽彈出面板時鼠標對3D場景的點擊事件
gameObject.AddComponent<BoxCollider>();
gameObject.GetComponent<BoxCollider>().size = new Vector3(2400, 2000, 0);

  不用代碼添加而是在Unity中直接添加組件的方式可能會導致該碰撞器覆蓋在NGUI界面上的按鈕上導致按鈕不能點擊,同時也應該注意添加該碰撞器的代碼位置,不然也可能導致該問題;

  NGUI中兩個界面重疊時,響應的是碰撞器較大的那個界面;

  2、當場景中的點擊和拖動事件是用FingerGestures插件實現的時候,可以使FingerGestures腳本失效:  

GameObject.Find("FingerGestures").transform.GetComponent<FingerGestures>().enabled = false;

  當2D界面關閉時,再使腳本生效:

GameObject.Find("FingerGestures").transform.GetComponent<FingerGestures>().enabled = true;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM