Find を使ってHierarchy上のオブジェクトを取得[Unity]

スクリプトからHierarchy上のオブジェクトを取り出す方法

UnityでHierarchy上にあるオブジェクトが欲しい時に行う手法を紹介します。

※言語はC#です。

Find を使って取得する

まずは準備としてHierarchy上にオブジェクトを配置して下さい。

Find

今回はCubeという名前のオブジェクトを作りました。それで取得したCubeの大きさを2倍にしたいと思います。 ソースコードはこちら↓

using UnityEngine;
using System.Collections;

public class Ekurea : MonoBehaviour {

    private GameObject objCube;

    void Start () {

        objCube = GameObject.Find(“Cube”);// Hierarchy上にあるCubeの取得

        ObjSetScale(objCube,2,2,2);// 2倍の大きさにする

    }
    // ObjectのScaleを変更する
    private void ObjSetScale(GameObject obj , float x , float y , float z){

        obj.transform.localScale = new Vector3(x,y,z);// cubeの大きさを指定値に

    }

}

これでCubeが2倍になったかと思います。しかし1つの場合ならまだいいですが、
たくさんのオブジェクトにFindでオブジェクトに干渉することは良くないと言われています。

それに単純に毎回Updateなどで毎回Cubeの大きさをかえるとなると処理が重い。

例えば一面に広がるフィールド上にある草木。これらの不特定多数に対するオブジェクトにFindを使うのはよろしくない。

じゃあどうすんの?

作ったObjectをListにつめこみます。

※ソースコードの一番上に using System.Collections.Generic;を追加で記述して下さい。 Listが使えません。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Ekurea : MonoBehaviour {

    private GameObject objCube;

    public List<GameObject> objCubes = new List<GameObject>();

    void Start () {

        objCube = GameObject.Find(“Cube”);// Hierarchy上にあるCubeの取得

        objCubes.Add(objCube);// 取得したCubeをリストに追加

        // リストに追加したCubeの大きさを変更する
        foreach(var cube in objCubes)
            ObjSetScale(cube,2,2,2);

    }

    // ObjectのScaleを変更する
    private void ObjSetScale(GameObject obj , float x , float y , float z){

        obj.transform.localScale = new Vector3(x,y,z);// cubeの大きさを指定値に

    }

}

これで1回取得したオブジェクトはリスト内に保持され、2回目からはFindではなくリスト内のオブジェクトにアクセスすることで

大きさを変えることができます。

あえて今回リストをpublicにしましたのでInspector上からCube1つ格納されてることがわかります。

Find

これでオブジェクトを100作ったとしてもリスト内に保持すれば、毎回Findせずにリスト内からアクセスすることができるようになりました。

今回はちょっとしたテクニックもつけてみました。参考になれば幸いです!でわでわ!

youtubeもやってるので是非遊びに来てください!→

チャンネル登録お願いします!(^^







1つ私のお願いを聞いて欲しい
ゲーム好きな同志達よ!

私のブログに何の因果か来てしまったゲーム仲間達よ、twitterフォローしてくれないだろうか?

_|\○_オネガイシヤァァァァァス!!

まじでブログ運営やってトップブロガーになりたいので皆さんの優しさをぼっちな私にプリーズ!

楽しいブログにするから!(*/▽\*)

そして記事のリツイートとかよろしくお願いします!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

xLia

どうも!えくれあです! 東京在住。超ゲーム好きなゲームプログラマー 趣味は色々あって、サッカーや最近は洋楽のRockを聞いています。 ブログはほとんどゲームの事ですが稀にオピニオン的なものも書いています。よろしくね(`・ω・´)/