Unity中的layer和tag

Unity中的layer和tag

layer和tag均用於標識不同類別的gameobject,側重點不同

Layer

  • Unity中默認已經有8種layer,但可以自行設置layer,上限32種,對應於一個int值的32位
  • 對於場景中的gameobject,均可以設置其layer。

用於camera

  • layer和camera配合起來,可以達到盡在camera上渲染特定層gameobject的效果
  • 相機有culling mask屬性,也是對應於一個32位int值,如果對應layer的bit爲1,則渲染此layer到此攝像機,在inspector界面可以選擇多個layer,也可以在代碼中設置多個layer的mask,比如camera.cullingMask = 1<<10 + 1<< 5
  • camera的clipping planes屬性有類似的作用,可限制繪製的物體距離範圍,僅在範圍內的將會被繪製。比如在房間中,緊貼camera的牆可以隱藏掉

用於raycast

  • raycast可檢測一條射線與gameobject的碰撞,檢測時可以定義layermask參數,從而只和這些layer的物體發生碰撞
  • 做raycast之前,通常要生成一條射線,相應的api爲
    • ScreenPointToRay 從攝像機到屏幕座標的射線
    • ViewportPointToRay 從攝像機到視口座標的射線。視口座標是相對於相機標準化的座標,左下角爲(0,0),右上角(1,1)。視口座標可以和世界座標、屏幕座標相互轉換
  • 做raycast時,定義相關layermusk
    • Physics.Raycast(ray, disance, layermask)
    • 如果沒有定義layermask,則僅忽略IgnoreRaycast layer的物體

用於燈光

  • 通過設置僅照亮特定layer

Tag

  • 可以通過GameObject.FindWithTay()快速搜索到相關物體

作者Focustc,來自於CSDN
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章