
Unity 小科普
老規矩,先介紹一下 Unity 的科普小知識:
- Unity是 實時3D互動內容創作和運營平臺 ,
- 包括游戲開發、美術、建筑、汽車設計、影視在內的所有創作者,借助 Unity 將創意變成現實,
- Unity 平臺提供一整套完善的軟體解決方案,可用于創作、運營和變現任何實時互動的2D和3D內容,支持平臺包括手機、平板電腦、PC、游戲主機、增強現實和虛擬現實設備,
- 也可以簡單把 Unity 理解為一個游戲引擎,可以用來專業制作游戲!
Unity 小知識點學習
GameObject.Find 和 Transform.Find區別
在Unity中最常用的獲取游戲物件的方法就是 GameObject.Find 和 transform.Find ,
這兩種方法都是通過 游戲物件名稱 來查找游戲物件的,
public static GameObject Find(string name);
public Transform Find(string name);
GameObject.Find 遍歷整個當前場景,挨個查找,效率偏低,非特殊情況一般不要使用,
Transform.Find 只查找自己本身以及自己的子物件,效率比較高,用途比較大,
一般來說他倆有個最大的區別就是
Transform.Find可以獲取處于 激活/非激活狀態 的游戲物件,回傳值型別是Transform 型別,GameObject.Find只能獲取處于 激活狀態 的游戲物件,回傳值型別是一個GameObject型別,
在層級面板中變灰的就是處于非激活的物件
此時使用 Transform.Find可以獲取到 游戲物件 c,但是GameObject.Find 是沒法獲取到該物件的

所以一般來說需要獲取游戲物件的時候使用Transform.Find即可,
當然也可以使用 Public拖拽 的方式手動獲取游戲物件,性能方面差異跟Transform.Find不是特別大,所以注意代碼規范即可,
Public拖拽 的優點在于少寫代碼,直接將游戲物件拖上去即可
但是如果出現代碼丟失修改之類的情況時,可能無法正確找到使用Public拖拽 對應的游戲物件,
Transform.Find 的缺點是不便修改層級關系,一旦改變了場景中物件的層級關系,代碼也會出現報錯問題,
之前一直把 GameObject.Find 和 Transform.Find 搞混了,此篇博客記錄一下,避坑踩雷,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/404215.html
標籤:其他
