0

ループ内で X オブジェクトを作成し、新しく作成されたオブジェクトのプロパティにアクセスして設定したいと考えています。チュートリアルに示されているように、渡された RigidBody でメソッドを使用しましInstantiateたが、剛体だけでなく、オブジェクトに接続されたスクリプトのプロパティにアクセスする必要があります。

これが私が機能させようとしている方法です:

public void makeGrid(int w = 10, int h = 10)
{
    gridWidth = w;
    gridHeight = h;

    int tileArrayLength = gridWidth * gridHeight;
    tileArray = new Tile[tileArrayLength];

    for (int i = 0; i < gridWidth; i++)
    {
        for (int j = 0; j < gridHeight; j++)
        {
            // add tiles
            Tile t = new Tile(); // !!! doesn't work >_<
            t.posX = i;
            t.posY = j;
            t.id = j + 10 * i;

            tileArray[t.id] = t;
        }
    }

}
4

1 に答える 1

2

ループ内で X オブジェクトを作成し、新しく作成されたオブジェクトのプロパティにアクセスして設定したいと考えています。

エディタでプレハブを作成してインスタンス化するか、明示的に を作成しGameObjectて必要なコンポーネントをアタッチすることができます。

GameObject prefabInstance = GameObject.Instantiate(Resource.Load("path_to_prefab")) as GameObject;

GameObject instanceThroughReference = GameObject.Instantiate(aReferenceToAnInstantiableObject) as GameObject;

GameObject emptyGameObject= new GameObject("empty game object");

どのような懸念のために:

チュートリアルに示されているように、渡された RigidBody で Instantiate メソッドを使用しましたが、剛体だけでなく、オブジェクトに接続されたスクリプトのプロパティにアクセスする必要があります。

プロパティとは、インスタンス化Componentsに添付されていることを意味すると思います。GameObject参照からオブジェクトをインスタンス化するかResources.Loadを介してロードする場合、元のゲームオブジェクトにアタッチしたいコンポーネントがある場合は、GetComponentメソッドを使用するか、AddComponent の戻り値をキャッチしてそれらを取得できます。

空を作成している場合は、必要GameObjectなものを明示的に添付Componentsする必要があります。

GameObject go = new GameObject("foo");
Bar bar = go.AddComponent<Bar>(); //where Bar extends MonoBehavior
于 2013-09-27T12:38:44.317 に答える