根据游戏中已经存在的预制件实例化原始预制件

时间:2019-05-25 20:54:20

标签: unity3d

我将Prefabs用于游戏关卡。 要调试一个关卡,只需将预制件拖到“层次结构”视图中,然后按[play]。

要测试级别,我需要一个选项来重播预制件,但是由于我将其放到了层次结构中,因此我需要一种方法来获取原始预制件并再次实例化它。 (并破坏当前的活动预制件)。

要在Play上找到当前的Active Prefab,请使用:

GameObject gameObj= GameObject.FindWithTag("Level");

如何获取原始的预制件,并在按下“ REPLAY”(重新加载预制件的按钮)时再次实例化它。

我确实尝试使用GetCorrespondingObjectFromOriginalSource https://docs.unity3d.com/ScriptReference/PrefabUtility.GetCorrespondingObjectFromOriginalSource.html 这将始终返回null。

1 个答案:

答案 0 :(得分:1)

场景中的对象在运行时没有对它们来自预制件的引用。运行(或构建)场景时,Unity破坏了这些引用。 PrefabUtility是仅用于编辑器的类,用于编写编辑器代码。

如果您想做类似的事情,建议创建另一个脚本,该脚本具有要生成的预制件的引用。然后,该脚本可以在游戏开始时将其作为孩子实例化(在Awake或开始),并且可以在上面重新启动实例时销毁实例并再次实例化该方法。