Unity关于Layer的管理
生活随笔
收集整理的這篇文章主要介紹了
Unity关于Layer的管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這算一個給一些多人合作的中型以上的項目提供的一個避坑建議,即layer管理。
沒錯,就是如圖這個東西,應該大部分人都知道有這么個東西和大概的用途,但是基本沒怎么動過。當然,在大部分項目中也不需要怎么處理這玩意,頂多增加個層級某些物體設置對應層級,這部分的api也很簡單。
不過一般使用到layer的項目,大家更喜歡直接賦值,我們應該不難看到項目中有類似的代碼
public static void SetLayerContainsChildren(Transform transform, int layer){transform.gameObject.layer = layer;transform.GetComponentsInChildren<Transform>().ForEach(t => t.gameObject.layer = layer);}public static void SetLayer(GameObject gameObject, int layer){gameObject.layer = layer;}現在聊一下這樣會出什么問題,比如后期的時候你需要調整一些層級的先后順序,你去設置里面改了layer順序之后發現,顯示的效果稀碎。因為你設置的layer 對應的int值變化了。所有你代碼設置的各種物體的層級都涼涼了。然后你去搜layer,發現還有幾千行Player的代碼。
所以,為了避免后期的坑,在項目之初還是又管理layer的必要的。
以下是我的兩種簡單思路。
方案1,增加layer層級的枚舉,所有layer都通過枚舉轉換來進行,layer變更的話更新對應枚舉即可。
方案2,賦值按名稱來賦值。LayerMask實際上是一個位碼操作,在Unity3D中一共有32個Layer層,并且不可增加。所以我們只要遍歷一遍,找到名稱對應的layer的int來賦值,即可保證我層級始終和我預期一致。
以上。
總結
以上是生活随笔為你收集整理的Unity关于Layer的管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 认知-洞察力:洞察力
- 下一篇: Openbravo3.0 客户端代码开发