包含此页的版本:
不含此页的版本:
您可以使用代码以程序方式生成预制件:一种资产类型,允许您存储包含组件和属性的游戏对象。预制件充当模板,你可以从中在场景中创建新的对象实例。更多信息
请参阅术语表在特定配置中。以下示例创建块预制件实例墙。
要创建块墙,您必须首先拥有用于创建墙的块预制件资产。
Assets文件夹(项目选项卡)更多信息Block.创建一个 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);
}
}
}
}
Wall脚本添加到空游戏对象。Blockprefab 资源放入 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 会以以下形式生成立方体: