Version: 6000.3
语言: 中文
实例化预制件简介
实例化射弹和爆炸

使用预制件构建结构

您可以使用代码以程序方式生成预制件:一种资产类型,允许您存储包含组件和属性的游戏对象。预制件充当模板,你可以从中在场景中创建新的对象实例。更多信息
请参阅术语表
在特定配置中。以下示例创建块预制件实例墙。

创建块预制件资产

要创建块墙,您必须首先拥有用于创建墙的块预制件资产。

  1. 在“层次结构”中,右键单击并选择“3D 对象>立方体”。
  2. 将多维数据集拖到项目窗口一个窗口,显示您的内容Assets文件夹(项目选项卡)更多信息
    术语表中查看
    .Unity 创建多维数据集的预制资产。
  3. 将预制件资产重命名为Block.
  4. 从层次结构中删除原始多维数据集资产。

创建实例化块的脚本

创建一个 MonoBehaviour 脚本并将其命名Wall.将以下代码添加到Wall脚本:

using UnityEngine;
public class Wall : MonoBehaviour
{
   public GameObject block;
   public int width = 10;
   public int height = 4;
  
   void Start()
   {
       for (int y=0; y<height; ++y)
       {
           for (int x=0; x<width; ++x)
           {
               Instantiate(block, transform.position + offset, Quaternion.identity);
           }
       }       
   }
}

将脚本附加到空游戏对象

  1. 创建一个空的游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
    请参阅术语表
    .右键点击 层级(Hierarchy) 并选择 创建空(Create Empty)。
  2. Wall脚本添加到空游戏对象。
  3. Blockprefab 资源放入 Block 字段中,
  4. 进入 Play 模式,Unity 会生成一堵墙,其中包含Block预 置。
由 4 排 10 个方块建造的墙。在检查器中选择空的游戏对象,并将 Block 预制件资产分配给 Block 字段。
由 4 排 10 个方块建造的墙。在检查器中选择空的游戏对象,并将 Block 预制件资产分配给 Block 字段。

您还可以使用代码将预制件放置在网格或其他配置中。以下示例将立方体放置在圆形结构中:

using UnityEngine;
public class CircleFormation : MonoBehaviour

{
    // Instantiates prefabs in a circle formation

    public GameObject prefab;
    public int numberOfObjects = 20;
    public float radius = 5f;

    void Start() 
    {
        for (int i = 0; i < numberOfObjects; i++)
        {
            float angle = i * Mathf.PI * 2 / numberOfObjects;
            float x = Mathf.Cos(angle) * radius;
            float z = Mathf.Sin(angle) * radius;
            Vector3 pos = transform.position + new Vector3(x, 0, z);
            float angleDegrees = -angle*Mathf.Rad2Deg;
            Quaternion rot = Quaternion.Euler(0, angleDegrees, 0);
            Instantiate(prefab, pos, rot);
        }
    }
}

当您将脚本附加到空游戏对象并进入播放模式时,Unity 会以以下形式生成立方体:

块的圆形排列。
块的圆形排列。

其他资源

实例化预制件简介
实例化射弹和爆炸