Unity 2D使用其组件实例化预制件

时间:2014-06-08 20:21:10

标签: c# unity3d

我有一些块预制件,我添加到游戏对象数组中:

public GameObject []阻止;

每个预制件都有BoxCollider2D,Script& Rigidbody2D组件。但是当我尝试在场景中实例化预制件时,它似乎没有附加组件?

以下是我实例化预制件的方法:

for (int i = 0; i < 4; i++) 
{
     for (int j = 0; j < gridWidth; j++) 
     {
      blockClone = Instantiate (blocks [Random.Range (0, blocks.Length)] as GameObject, new Vector3 (j, -i-2, 0f), transform.rotation) as GameObject;
     }

}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

确保您的预制件实际更新为包含BoxCollider2D和Rigibody2D。

更改此行:

blockClone = Instantiate (blocks [Random.Range (0, blocks.Length)] as GameObject, 
             new Vector3 (j, -i-2, 0f), transform.rotation) as GameObject;

致:

blockClone = Instantiate(blocks [Random.Range (0, blocks.Length)], 
             new Vector3(j, -i-2, 0f), transform.rotation) as GameObject;

您不需要额外的as GameObject


如果所有其他方法都失败了,您可以使用AddComponent.

在运行时将它们附加到预制件上
  blockClone.AddComponent<BoxCollider2d>();

那应该是你的最后一个选择,但在你做之前要仔细检查你的预制件。