無意間發現了一個小技巧。如下圖所示,可以發現UGUI的Image組件的RaycastTarget勾選以後會消耗一些效率,爲了節省效率就不要勾選它了,不僅Image組件Text組件也有這樣的問題。 一般UI裏也就是按鈕才需要接收響應事件,那麼大部分image和text是是不需要開RaycastTarget的。 但是問題就來了,Unity默認在hierarchy窗口Create->UI->Image 、Text的時候就會自動幫我們勾選上RaycastTarget, 一個複雜點的界面至少也300+個Image和Text, 總不能一個個取消吧。 所以我們可以重寫Create->UI->Image的事件。
[MenuItem("GameObject/UI/Image")] static void CreatImage() { if(Selection.activeTransform) { if(Selection.activeTransform.GetComponentInParent<Canvas>()) { GameObject go = new GameObject("image",typeof(Image)); go.GetComponent<Image>().raycastTarget = false; go.transform.SetParent(Selection.activeTransform); } } }
這樣創建出來的Image就不帶 RaycastTarget,Text組件原理同上。 Unity版本5.3.3
轉載請註明: 雨鬆MOMO
2016年04月13日於 雨鬆MOMO程序研究院 發表