【发布时间】:2020-08-23 20:48:26
【问题描述】:
我有一个我在运行时实例化的游戏对象。然后,我对其进行了一些更改,例如:添加一些子对象、组件等。 我想以某种方式保存这个新创建的对象,以供我在其他场景和会话中使用。 问题是:如何? 谢谢。
PS 显然我不能使用 UnityEditor 命名空间
【问题讨论】:
-
这能回答你的问题吗? Move/Transfer GameObject to another scene
我有一个我在运行时实例化的游戏对象。然后,我对其进行了一些更改,例如:添加一些子对象、组件等。 我想以某种方式保存这个新创建的对象,以供我在其他场景和会话中使用。 问题是:如何? 谢谢。
PS 显然我不能使用 UnityEditor 命名空间
【问题讨论】:
如果您想在其他场景中重复使用该对象,您可以使用DontDestroyOnLoad 方法来防止它在更改场景时被破坏。之后,如果您的目标是生成此对象的副本,您可以禁用它并将其视为预制件,并在必要时实例化它的副本。
如果您希望在重新启动游戏后能够重新使用对象,您可能想查看在 Unity 中保存数据的方法。一种简单的方法是使用PlayerPrefs,但您必须自己编写代码来加载/保存对象的状态,因为它只能直接保存int、float、string 数据类型值.
这里有几个参考: https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
您可以尝试的更具体的解决方案是将您创建的自定义类序列化为JSON 文件。该类将包含必要的数据,以重新创建您在场景中拥有的任何 GameObject。
不能在编辑器之外创建预制件。这是一个参考:https://www.reddit.com/r/Unity3D/comments/a5c02u/save_gameobject_as_prefab_at_runtime/
【讨论】: