Skip to content

Unity中创建预制体Prefabs

Prefabs(预制体)是一种非常常见和有效的方式来管理和重复使用游戏对象。

创建预制体

  • 在project中,选中右键create > prefab
  • 在Hierarchy中,将已创建的对象拖到Project面板中,弹出窗口选中Origin。

创建prefab对象后,修改对应的模型,在游戏中的生成对象都会同样应用。 你也可以单独选中一个对象,修改不应用到全部。则这个prefab对象是一个独立的存在。

脚本管理Prefab对象

由于预制体可以在需要的时候才创建,所以我们需要一个单独的管理类来控制它。

  • 创建脚本 Project窗口 > create > C# Script, 然后命名为SpawnManager.

  • 声明一个预制体对象模型 SpawnManager 类中,声明一个公共GameObject对象public GameObject prefabsObject

  • Hierarchy面板中,创建一个空对象 在Hierarchy面包中,创建一个EmptyObject,将SpawnManager应用到该空对象上。同时将Project面板中创建的预制体,赋值给prefabsObject。

  • 创建一个预制体对象


public GameObject prefabsObject;
// Start is called before the first frame update
void Start()
{
   Instantiate(prefabsObject,new Vector3(0,0,6),prefabsObject.transform.rotation);
}

创建预制体对象用Instantiate方法,参数为(预制体对象,positon,rotation)

  • 销毁一个预制体对象
private GameObject createEnemyInstance;
// Start is called before the first frame update
void Start()
{
   createEnemyInstance = Instantiate(perfabs,new Vector3(0,0,6),perfabs.transform.rotation);
}

// Update is called once per frame
void Update()
{
   Destroy(createEnemyInstance); //销毁createEnemyInstance对象
}

通常我们可以通过给预制体创建一个通用Tag, 这样在游戏中需要检测是否销毁预制体时。
通过GameObject.FindGameObjectsWithTag("tag")的方式来获取预制体数组,进而检测其是否满足销毁条件。

为预制体创建一个随机位置

float xRange = Random.Range(-9,9);
float zRange = Random.Range(-10,10);
createEnemyInstance = Instantiate(perfabs,new Vector3(xRange,0,zRange),perfabs.transform.rotation);

上次更新于: