注:這里的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;
