Unity基礎 之 查找遊戲物體的幾種方式解析(二)

這是我參與8月更文挑戰的第6天,活動詳情查看:8月更文挑戰markdown

前言:

一篇小白也能看懂的查找遊戲物體的方式解析 -- Unity 之 查找物體的幾種方式(二)。本文經過實際測試得出使用結論,你們進行簡單記錄,在使用時想不起來能夠再來看看,多用幾回基本就沒有問題了。ide

一,Transform.Find()

查找掛載物體父級,同級,子級物體:post

void TransformFind()
{
    // 找父級
    Transform parent = transform.Find("Root");
    Debug.Log("找父級物體,是否找到:" + (parent != null));
    
    // 找同級
    Transform selfObj = transform.Find("Parent_1");
    Debug.Log("找同級物體,是否找到:" + (selfObj != null));
    
    // 找子級
    Transform child = transform.Find("Child");
    Debug.Log("找子級物體,是否找到:" + (child != null));
    
    // 找子級隱藏物體
    Transform childHide = transform.Find("ChildHide");
    Debug.Log("找子級隱藏物體,是否找到:" + (childHide != null));
}
複製代碼

TransformFind


找多層級子物體:測試

// 找二級子物體
Transform child_1 = transform.Find("Child_1_1");
Debug.Log("找二級子物體 參數只寫名稱,是否找到:" + (child_1 != null));
// 找二級子物體
Transform child_1_1 = transform.Find("Child/Child_1_1");
Debug.Log("找二級子物體 參數寫全路徑,是否找到:" + (child_1_1 != null));
複製代碼

找二級子物體

Find()得出結論:ui

  1. 只能找其子物體,不能找其同級或更高層級物體
  2. 找子物體時不考慮是否被禁用(隱藏)
  3. 找多層子物體時需寫全路徑(不然即便存在也找不到)

二,Transform.FindObjectOfType()

通過測試和GameObject.FindObjectOfType()沒什麼區別,測試結果一致,測試代碼和截圖就不發處理佔地方了。spa

測試時我發現 GameObject.FindObjectsOfType<類型>()Transform.FindObjectsOfType<Transform>() 被合併了,應該說徹底是一個方法了,根據下圖能夠看到,我雖然前打的是Transform的標籤,可是它是灰色的,鼠標放上去看到方法引用的倒是GameObject.FindObjectsOfType3d

測試結果

得出結論: Transform.FindObjectOfType() 和 GameObject.FindObjectOfType()使用方式同樣,結果也沒有區別...code


三,transform.GetChild()

Transform.GetChild()是找子物體的方法,也是我我的比較喜歡用的方式,弊端是不能隨意修改遊戲物體的層級關係。orm

使用起來也很簡單 好比:找一級子物體的第一個物體索引

Transform child1 = transform.GetChild(0);
複製代碼

找一級子物體的第一個物體的第三個子物體

Transform child1 = transform.GetChild(0).GetChild(2);
複製代碼

使用方式:幾個層級就幾個GetChild(),參數就是當前層級的第幾個物體(從0開始)


使用拓展:

  • 遍歷子物體:
for (int i = 0; i < transform.childCount; i++)
{
     Debug.Log(transform.transform);
}
複製代碼
  • 獲取當前物體的父物體transform.parent

  • 獲取當前物體的根物體transform.root


transform.GetChild()使用總結:

  • 以自身爲基礎,查找子物體(注意索引從0開始,寫多報錯)
  • 可使用transform.parent.parent 的形式無限向上,而後再GetChild(),就達到了查找父層級或更高層級物體的目的
  • 弊端是依賴遊戲物體的層級關係,使用時需確保層級關係相對穩定。若不穩定會致使每次修改遊戲體時還要修改代碼,這就加大了工做量了。

好了本文就介紹這裏了,感謝你觀看至此。若對你有所幫助,但願能夠三連支持下。若你還相關問題沒有獲得解決或者更好的處理方案,也但願你留言評論。

Unity基礎 之 查找遊戲物體的幾種方式解析(一):juejin.cn/editor/draf…

相關文章
相關標籤/搜索