我将Prefabs用于游戏关卡。 要调试一个关卡,只需将预制件拖到“层次结构”视图中,然后按[play]。
要测试级别,我需要一个选项来重播预制件,但是由于我将其放到了层次结构中,因此我需要一种方法来获取原始预制件并再次实例化它。 (并破坏当前的活动预制件)。
要在Play上找到当前的Active Prefab,请使用:
GameObject gameObj= GameObject.FindWithTag("Level");
如何获取原始的预制件,并在按下“ REPLAY”(重新加载预制件的按钮)时再次实例化它。
我确实尝试使用GetCorrespondingObjectFromOriginalSource
https://docs.unity3d.com/ScriptReference/PrefabUtility.GetCorrespondingObjectFromOriginalSource.html
这将始终返回null。
答案 0 :(得分:1)
场景中的对象在运行时没有对它们来自预制件的引用。运行(或构建)场景时,Unity破坏了这些引用。 PrefabUtility是仅用于编辑器的类,用于编写编辑器代码。
如果您想做类似的事情,建议创建另一个脚本,该脚本具有要生成的预制件的引用。然后,该脚本可以在游戏开始时将其作为孩子实例化(在Awake或开始),并且可以在上面重新启动实例时销毁实例并再次实例化该方法。