实例化预制件

实例化预制件有两种方法:在设计时运行时

设计时实例化

在设计时实例化预制件对于可视地放置同一对象的多个实例(例如,在设计游戏关卡时放置树 )非常有用。

  • 要在视觉上实例化预制件,请将其从项目视图拖动到场景层次结构。

    StackOverflow 文档

  • 如果你正在编写编辑器扩展 ,你还可以通过编程方式调用 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);

注意: 预制术语在运行时不存在。