我想在循环中创建X对象,访问和设置新创建对象的属性。我已经将Instantiate
方法与传递的RigidBody一起使用,如教程中所示,但我需要访问连接到对象的脚本的属性,而不仅仅是它的刚体。
这是我正在尝试的方法:
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;
}
}
}
答案 0 :(得分: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");
关注的是:
我已经使用了Instantiate方法和传递的RigidBody,如图所示 在教程中,但我需要访问脚本的属性 连接到物体,而不仅仅是刚体。
对于属性我认为你的意思是Components
附加到GameObject
实例。
如果您从引用实例化对象或通过Resources.Load加载,如果原始GameObject具有您想要附加到它的Component,则可以使用GetComponent方法检索它们,或者捕获AddComponent的返回值。
如果您要创建一个空的GameObject
,则必须明确附加您需要的Components
:
GameObject go = new GameObject("foo");
Bar bar = go.AddComponent<Bar>(); //where Bar extends MonoBehavior