テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

UnityでHierarchyの特定の親子構造のオブジェクトを見つける

f:id:tsubaki_t1:20150509235049p:plain

実はパス指定でFindがかけられたそうです。マニュアルにも書いてありましたが、Find自体めったに使わないので知りませんでした。

例えば上の画像では、以下の様なコードを記述するとルート直下のSampleGame/Manager下のPlayerオブジェクトを取得します。

var obj = GameObject.Find("/SampleGame/Manager/Player");

また、ルート直下である必要がない場合、以下のように頭の/を抜いて記述すれば任意のManager/Playerを取得します。

var obj2 = GameObject.Find("Manager/Player");

 なお非アクティブなGameObjectはUnity的には削除されている扱いらしく、Findにはヒットしません。

ランタイムに繋げるのはシングルトンもしくは自分でインスタンス化が良さそうですが、エディタで参照関係を整理しておく手法を使う場合は使えそうです

関連

コンポーネント追加時にパラメータも設定する - テラシュールブログ

Unityで少しだけ高速なシングルトン(Singleton) - テラシュールブログ

Unity - スクリプティング API: GameObject.Find