Unity3D 入門:如何在腳本中找到遊戲對象的父子級 祖孫級對象和它們的組件

在真正能玩的遊戲場景中,很多腳本的執行是在不確定的遊戲對象上進項的,於是會考慮在父對象或者子對象上去寫腳本。這時,可能需要查找遊戲對象。那麼如何在腳本中找到父子游戲對象(gameObject)呢?


場景

如下圖所示,Windows 遊戲對象下面可能有很多不確定數量和位置的遊戲對象,需要操作它們。

遊戲場景

在爲遊戲對象創建腳本的時候,這個腳本中的類會繼承自 MonoBehavior

using UnityEngine;

public class WindowUpdater : MonoBehaviour
{
    void Start()
    {
    }

    void Update()
    {
    }
}

找父組件/子組件

MonoBehavior 直接提供了查找父子組件的方法 GetComponent(s) / GetComponent(s)InParentGetComponent(s)InChildren,因此直接調用即可。對於泛型方法,每個子對象只會找到一個組件,所以通常適用於子組件非常簡單的場景。

var renderers = GetComponentsInChildren<Renderer>();
for (var i = 0; i < renderers.Length; i++)
{
    var texture = textures[i];
    renderers[i].material.mainTexture = texture;
}

找父對象/子對象

MonoBehavior 並沒有提供直接查找父子對象的方法。

但是 Transform 有!

所以,通過 Transform 可以間接獲取到子對象。GetChild() GetChildCount

var transform = GetComponent<Transform>();
for (int i = 0; 0 < renderers.Length; i++)
{
    transform.GetChild(i).gameObject.SetActive(true);
}

我的博客會首發於 https://blog.walterlv.com/,而 CSDN 會從其中精選發佈,但是一旦發佈了就很少更新。

如果在博客看到有任何不懂的內容,歡迎交流。我搭建了 dotnet 職業技術學院 歡迎大家加入。

知識共享許可協議

本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名呂毅(包含鏈接:https://walterlv.blog.csdn.net/),不得用於商業目的,基於本文修改後的作品務必以相同的許可發佈。如有任何疑問,請與我聯繫

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