トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

unity_script_create_gameobject

GameObjectの作成


カラのGameObjectを作成し、ここから複数のGameObjectを新たに生成します。
カラのGameObjectには以下のスクリプトをComponent割り当てておいてください。

using UnityEngine;
using System.Collections;

public class CreateGameObjectTest : MonoBehaviour {
    public int createCount;                // 作成するGameObject数.
    private Material m_Material;           // 割り当てるマテリアル.
    private GameObject [] m_gameObjects;   // 作成したGameObjectを格納する配列.
 
    void Start () {
        // リソースからマテリアルの読み込み.
        m_Material = Resources.Load("materials/TestMat", typeof(Material)) as Material;

        if (createCount == 0) return;

        m_gameObjects = new GameObject[createCount];  // GameObjectの配列を作成.

        for (int i = 0; i < createCount; i++) {
            // GameObjectの作成.
            m_gameObjects[i] = new GameObject("obj_" + i);

            // MeshRenderer の作成.
            MeshRenderer meshRenderer = m_gameObjects[i].AddComponent<MeshRenderer>();

            // MeshRenderer のマテリアルを割り当て.
            meshRenderer.material = m_Material;

            // MeshFilter の作成.
            m_gameObjects[i].AddComponent<MeshFilter>();

           // 位置の変更.
           m_gameObjects[i].transform.localPosition = new Vector3((float)i * 0.5f, 0.0f, 0.0f);
        }
    }
}

Resources.Loadでのリソースの読み込みは「リソースとしてObjectを取得」を参照。

public int createCount;

は、Unityエディタ上で数値を指定でき、そこで生成するGameObject数を指定します。

「new GameObject」でGameObjectを新規に作成し、MeshRenderer とMeshFilter を追加することでメッシュの形状として機能します。
MeshRendererでマテリアルを指定。

別途、自身で作成したスクリプトを割り当てる場合は、

MyScript script= m_gameObjects[i].AddComponent("MyScript") as MyScript;

のように指定します(MyScript.csが作成したスクリプト/Class名です)。

m_gameObjects[i].AddComponent<MyScript>();

でも可能。

「transform」で位置や回転を指定します。


最終更新時間:2014年01月17日 14時57分53秒