Unity查找物體的子物體、孫物體


Unity查找物體下的所有物體


本文提供全流程,中文翻譯。

Chinar 堅持將簡單的生活方式,帶給世人!

(擁有更好的閱讀體驗 —— 高分辨率用戶請根據需求調整網頁縮放比例)



Chinar —— 心分享、心創新!

助力快速理解 Unity 中查找對象下的所有物體

為新手節省寶貴的時間,避免采坑!



全文高清圖片,點擊即可放大觀看 (很多人竟然不知道)


1

GetComponentsInChildren <Transform>() —— 獲取物體下的所有物體


此函數會返回一個 Transform 數組

遍歷數組中元素即可拿到所有子物體、孫物體(所有物體)
舉個栗子黑白88
1. 用於測試,在層次列表中創建如下結構
這里寫圖片描述
2. 將腳本掛載到一級物體上

using UnityEngine;


/// <summary>
/// 查找物體
/// </summary>
public class ChinarFindObject : MonoBehaviour
{
    private void Start()
    {
        //遍歷所有物體:GetComponentsInChildren<Transform>()返回一個 Transform[] 數組
        foreach (var t in GetComponentsInChildren<Transform>())
        {
            print(t.name);
        }
    }
}

3. 運行后結果:如果所示,會找到所有的物體,且包括自身
運行結果


2

GameObject Active False —— 游戲對象關閉時


注意:

當游戲對象被關閉時,也就是在 Inspector 面板中被關掉時

就會找不到北關掉的物體,以及其下方的所有物體

例如,當我們關掉“二級”物體時
這里寫圖片描述
舉個栗子黑白88
再次運行后結果:
這里寫圖片描述
可以看到,被關閉的物體,就不會被找到了


3

Solve —— 解決辦法


注意:

其實這種情況,其實很常見

我們要獲取到,目標物體下方的所有物體,包括被關閉掉的物體時要怎么辦呢?

其實解決辦法很簡單,只需要加一個 True 到括號中即可

GetComponentsInChildren<Transform>(true)即可
舉個栗子黑白88

using UnityEngine;


/// <summary>
/// 查找物體
/// </summary>
public class ChinarFindObject : MonoBehaviour
{
    private void Start()
    {
        //遍歷所有物體:GetComponentsInChildren<Transform>(true)返回一個 Transform[] 數組
        //括號中,加上true。會將被關閉掉的物體也返回到數組中
        foreach (var t in GetComponentsInChildren<Transform>(true))
        {
            print(t.name);
        }
    }
}

再次運行后結果:
運行結果
可以看到,被關閉的物體,也會被找到,並返回到數組中

我們只需對需要的信息,進行操作即可


支持

May Be —— 搞開發,總有一天要做的事!


擁有自己的服務器,無需再找攻略!

Chinar 提供一站式教程,閉眼式創建!

為新手節省寶貴時間,避免采坑!


先點擊領取 —— 阿里全產品優惠券 (享受最低優惠)


1 —— 雲服務器超全購買流程 (新手必備!)

2 —— 阿里ECS雲服務器自定義配置 - 購買教程(新手必備!)

3—— Windows 服務器配置、運行、建站一條龍 !

4 —— Linux 服務器配置、運行、建站一條龍 !





技術交流群:806091680 ! Chinar 歡迎你的加入


END

本博客為非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究

對於需要復制、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯系,留言,Email: ichinar@icloud.com

對於經本博主明確授權和許可使用文章及內容的,使用時請注明文章或內容出處並注明網址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM