WisdomSoft - for your serial experiences.

ゲームオブジェクトの検索

スクリプトからシーン内にある任意のオブジェクトを検索する方法を紹介します。

名前からオブジェクトを取得する

スクリプトは、自分自身を保有するゲームオブジェクトを gameObject プロパティから取得できました。しかし、全く関係のないゲームオブジェクトを操作したい場合もあるでしょう。スクリプト自身が生成したゲームオブジェクトであれば変数として保持できますが、エディタから作られた別のオブジェクトにアクセスするには、オブジェクトを検索しなければなりません。

GameObject クラスの Find() メソッドは、他のオブジェクトを名前から検索できます。

GameObject クラス Find() メソッド
public static GameObject Find(string name)

name パラメータには、検索するオブジェクトの名前を指定します。この名前に一致するゲームオブジェクトがあれば、それを返します。存在しない場合は null が返されます。

コード1
using UnityEngine;

public class Test : MonoBehaviour
{
	private GameObject cube;
	void Start()
	{
		cube = GameObject.Find("Cube");
	}
	
	void Update()
	{
		cube.transform.Rotate(0, 1, 0);
	}
}
実行結果
コード1 実行結果

コード1は Cube という名前のオブジェクトを検索し、取得したオブジェクトをフレームごとに回転させるというスクリプトです。このスクリプトがどのオブジェクトに設定されているかは問いません。スクリプトを持つオブジェクトとは無関係に、常に Cube という名前のオブジェクトを回転させます。Cube という名前のオブジェクトが見つからない場合は例外が発生します。