首页 文章

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

提问于
浏览
1

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

public GameObject [] blocks;

每个预制件都有一个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 回答

  • 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>();
    

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

相关问题