【Unity】GetComponentsInChildren<コンポーネント名>();
GetComponentsInChildren<コンポーネント名>()
は、このメソッドが呼び出されるゲームオブジェクト及びその子オブジェクトにアタッチされたコンポーネント名
の全てのコンポーネントを取得するためのメソッドです。これにより、特定のゲームオブジェクトの階層内で特定のタイプのコンポーネントを効率的に探索し、それらのリストを返すことができます。例えば、UI要素が多数のボタンを含むパネル内に配置されている場合、このメソッドを使用してそのパネル内の全てのコンポーネント
を簡単に取得できます。
サンプル
- UIのPanelを作成
- 子オブジェクトとしてUIのButtonを複数配置
ButtonはPrefabにしておく - Panelと各Buttonにはスクリプトをアタッチします
ButtonFinder
using UnityEngine;
public class ButtonFinder : MonoBehaviour
{
void Start()
{
// このゲームオブジェクトとその子オブジェクトからItemButtonコンポーネントを全て取得
ItemButton[] buttons = GetComponentsInChildren<ItemButton>();
// 取得したItemButtonの数とそれぞれのメソッドを実行
foreach (ItemButton button in buttons)
{
button.ViewName();
}
}
}
このスクリプトは、ButtonFinder
がアタッチされたゲームオブジェクトとそのすべての子オブジェクトを検索し、ItemButton
コンポーネントを持っているものを見つけ出し、それらの名前をコンソールに出力します。これは、UIのセットアップ時や動的にコンテンツが変化するゲームシーンで特に有用です。
ItemButton
using UnityEngine;
public class ItemButton : MonoBehaviour
{
public void ViewName()
{
Debug.Log($"ゲームオブジェクト名 {gameObject.name}");
}
}
ViewName
というパブリックメソッドは、そのスクリプトがアタッチされているゲームオブジェクトの名前をコンソールに表示します。具体的には、Debug.Log
を使用して、gameObject.name
を含む文字列をログ出力しています。この機能は、開発中にゲームオブジェクトを特定しやすくするために役立ちます。
ディスカッション
コメント一覧
まだ、コメントがありません