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