繁体   English   中英

UNITY C# - 如何在运行时中保存已在运行时中实例化的游戏 Object?

[英]UNITY C# - How can I save a Game Object, that has been instantiated in a runtime, in a runtime?

我有一个我在运行时实例化的游戏 Object。 然后,我对其进行了一些更改,例如:我添加了一些子对象、组件等。我想以某种方式保存这个新创建的 object 以供我在其他场景和会话中使用。 问题是:如何? 谢谢你。

PS 显然我不能使用 UnityEditor 命名空间

如果您想在其他场景中重复使用 object,您可以使用DontDestroyOnLoad方法来防止它在切换场景时被破坏。 之后,如果您的目标是生成此 object 的副本,您可以禁用它并将其视为预制件并在必要时实例化它的副本。

如果您希望能够在重新启动游戏后重新使用 object,您可能想查看在 Unity 中保存数据的方法。 一种简单的方法是使用PlayerPrefs ,但您必须自己编写代码来加载/保存 object 的 state,因为它只能直接保存intfloatstring数据类型值。

Here are a couple of references: https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

编辑:

您可以尝试的更具体的解决方案是将您制作的自定义 class 序列化为JSON文件。 GameObject将包含重新创建场景中任何游戏对象所需的数据。

在编辑器之外创建预制件不是一种选择。 这是一个参考: https://www.reddit.com/r/Unity3D/comments/a5c02u/save_gameobject_as_prefab_at_runtime/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM