【Unity】GameObject.Find()と Transform.Find()でオブジェクトを取得する。

今回も「Unityではじめる2Dゲーム作り徹底ガイド」から勉強したことで、これは便利だと思っていることを紹介します。(P300ぐらいまで) 今回は、GameObjectやTransformを取得する方法です。 以前も勉強をしたのですが、すっかり忘れているので、簡単にブログに書いて振り返っていきます。

Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦
大野 功二

SBクリエイティブ
売り上げランキング : 5252

Amazonで詳しく見る

GameObjectやTransformを取得する

Hirearchyに配置されているオブジェクトを取得します。

GameObject.Find()

GameObject.Find()を利用すれば、簡単にオブジェクトを取得できます。 [c] player = GameObject.Find("Player"); [/c]

注意点としては、アクティブなオブジェクトしか取得できません。

2015-3-10-fdsas

transform.Find

同じFindで、「transform.Find()」があります。 これは、GameObjectではなく、Transformを取得できます。 条件は以下の2点です。

  • 子オブジェクトのTransformを取得する
  • アクティブ、インアクティブ関係なく取得できる
2015-3-10-dfsa.png

コードは以下のようになります。 [c]

Transform _trans = transform.Find("Hogehoge");

[/c]

オブジェクトを取得

GameObject.Find()のように、オブジェクトを取得する場合は以下のようになります。 [c]

GameObject _obj = transform.gameObject;

[/c]

コンポーネントを取得

これを使えば、その他のコンポーネントも取得ができます。 [c]

BoxCollider2D boxCol2D = transform.Find("Hogehoge").GetComponent();

boxCol2D.transform.gameObject.SetActive(false);

[/c]

最後に

この2D本は、個人的にとてもむずかしいので理解できていない部分もありますが、ちょっとづつ進めています。 Unity使う、使わないは別にして、ゲーム作りに使えそうのノウハウが色々あるのでとても勉強になります。 GUI部分が、最新のUnityと違うやり方なので、この部分はまた別途勉強をしないといけないなあと感じます。