LoginSignup
8
2

More than 5 years have passed since last update.

UnityのGameObject.Find()でnullが帰ってきてしまうときの対処法

Posted at

GameObject.Find()とは

UnityEngineで提供されているGameObjectクラスをつかってシーン内のオブジェクトを取得する関数.引数に対象のオブジェクト名,相対パス,絶対パスが指定できる.詳しくは公式のマニュアル参照.

nullが帰ってくるとき

パスが間違っている(orオブジェクトが存在しない)

スペルミスやそもそも対象のものがないとき.これは直せばOK.

アクティブでない

公式マニュアルにもあるが,対象がアクティブになっていないときはnullになる.(これに気付かないでハマってた)
こういう場合は,親オブジェクトを経由することで取得する方法がある.Transform.Find()はアクティブでなくても取得できるので,以下のようなコードを書けば取得できる.transformからGameObjectに変えなければいけないので注意.

FindTest.cs
GameObject parent, target;

void Start() {
 parent = GameObject.Find("path/to/oya");
 target = parent.transform.Find("WantIt").gameObject;
}

void Update() {
 //処理
}
8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2