版本: Unity 6 (6000.0)
语言英语
  • C#

PrefabUtility.InstantiatePrefab

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每个建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static Object InstantiatePrefab(Object assetComponentOrGameObject);

声明

public static Object InstantiatePrefab(Object assetComponentOrGameObject, SceneManagement.Scene destinationScene);

参数

assetComponentOrGameObject 要实例化的预制体资源。
destinationScene 要实例化预制体的场景。

返回值

Object 预制体的根 GameObject。

描述

在给定的场景中实例化给定的预制体。

这类似于 Instantiate,但会创建与预制体的预制体连接。如果您没有指定场景句柄,则预制体将在活动场景中实例化。

注意: 您不应该从 OnValidate()Awake() 方法实例化预制体。这是因为 GameObject 唤醒的顺序不是确定性的,因此会导致意外行为。如果您尝试这样做,Unity 会生成一条警告,内容为“SendMessage 无法在 Awake、CheckConsistency 或 OnValidate 期间调用”。

using UnityEngine;
using UnityEditor;

public class Example { [MenuItem("Examples/Instantiate Selected")] static void InstantiatePrefab() { Selection.activeObject = PrefabUtility.InstantiatePrefab(Selection.activeObject as GameObject); }

[MenuItem("Examples/Instantiate Selected", true)] static bool ValidateInstantiatePrefab() { GameObject go = Selection.activeObject as GameObject; if (go == null) return false;

return PrefabUtility.IsPartOfPrefabAsset(go); } }