【问题标题】:Instantiate original Prefab based on an already existing Prefab in game基于游戏中已经存在的 Prefab 实例化原始 Prefab
【发布时间】:2019-05-26 05:16:23
【问题描述】:

我正在为游戏关卡使用预制件。 要调试关卡,我只需将预制件拖到 Hierarchy 视图中,然后按 [play]。

为了测试关卡,我需要一个选项来重放预制件,但由于我将它放到层次结构中,我需要一种方法来获取原始预制件并再次实例化它。 (并销毁当前活动的预制件)。

要在 Play 上查找当前的 Active Prefab,我只需使用:

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

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

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

【问题讨论】:

    标签: unity3d


    【解决方案1】:

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

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

    【讨论】:

    • 我想除了快速调试之外,它不能做到。谢谢你的来信。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多