いんでぃーづ

ゲームいろいろ、いろいろ自由

Unity : プレハブに保存した値を Instantiate せずに直接読む

プロジェクトフォルダにあるPrefabから、Instantiate せずに各種コンポーネントを取得したかったメモ。

Inspectorからリンクしている場合

シーン内にあるGameObjectと同様に、GetComponent メソッドでコンポーネントを取得、参照できます。
インスペクタから設定済みの数値もそのまま取得可能。

   public GameObject Prefab;   // 対象のプレハブ

    void Start () {
               // Rigidbodyコンポーネントを取ってみる
        Rigidbody rigidbody = Prefab.GetComponent<Rigidbody> ();
        Debug.Log ("prefab mass : "+rigidbody.mass);

        // アタッチしているスクリプトも取得できる
        TestPrefabScript fromPrefab = Prefab.GetComponent<TestPrefabScript> ();
        Debug.Log ("from script : "+fromPrefab.Point);
    }

Resourcesにある場合

Resource.Load で読み込んだアセットからGetComponentできます。
ポイントは、Loadの第二引数に type を指定することで任意のコンポーネントを直接参照できること。GameObject.Instantiateは不要です。

   // Resourcesにあるプレハブから
    Rigidbody resourceRigidbody = Resources.Load ("TestResource", typeof(Rigidbody)) as Rigidbody;

    Debug.Log ("prefab mass : "+resourceRigidbody.mass);

    // 同様にスクリプトも参照可能
    TestPrefabScript fromResource = Resources.Load ("TestResource", typeof(TestPrefabScript)) as TestPrefabScript;
    Debug.Log ("from resource : "+fromResource.Point);

“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。