实例化预制件
实例化预制件有两种方法:在设计时或运行时。
设计时实例化
在设计时实例化预制件对于可视地放置同一对象的多个实例(例如,在设计游戏关卡时放置树 )非常有用。
-
要在视觉上实例化预制件,请将其从项目视图拖动到场景层次结构。
-
如果你正在编写编辑器扩展 ,你还可以通过编程方式调用
PrefabUtility.InstantiatePrefab()
方法实例化预制件:GameObject gameObject = (GameObject)PrefabUtility.InstantiatePrefab(AssetDatabase.LoadAssetAtPath("Assets/MainCamera.prefab", typeof(GameObject)));
运行时实例化
在运行时实例化预制件对于根据某些逻辑创建对象的实例(例如*,每 5 秒产生一个敌人* ) 是有用的。
要实例化预制件,你需要引用预制件对象。这可以通过在 MonoBehaviour
脚本中使用 public GameObject
字段(并使用 Unity 编辑器中的检查器设置其值)来完成:
public class SomeScript : MonoBehaviour {
public GameObject prefab;
}
或者将预制件放在 Resource 文件夹中并使用 Resources.Load
:
GameObject prefab = Resources.Load("Assets/Resources/MainCamera");
一旦你有了对 prefab 对象的引用,你就可以在你的代码中的任何地方使用 Instantiate
函数来实例化它(例如在循环内创建多个对象 ):
GameObject gameObject = Instantiate<GameObject>(prefab, new Vector3(0,0,0), Quaternion.identity);
注意: 预制术语在运行时不存在。