首页 > 解决方案 > unity:场景间持久化实用建议

问题描述

所以我做了很多研究,长话短说决定用 dontdestroyonload 做一个游戏管理器来保持持久性。

有很多教程,但我是新手,在实际实现这一点时我有很多问题。当你只有一个玩家角色时这很容易,但我的游戏有一群玩家,他们的预制件只需要在战斗中生成,然后当战斗结束时,我不需要他们的模型......只是他们的统计数据。

因此,如果我将所有党员附加到游戏管理器,它将保留他们的统计数据,但也会保留其他所有内容:模型、战斗脚本等。我只需要保留他们的统计数据。那么其他人在实践中是如何做到的呢?

我正在考虑添加代码来销毁我不需要的脚本和组件,然后在触发战斗时重新附加它们,但我只是觉得它很老套,而且我错过了一个更好的解决方案。我看过专业包,但从未见过有人这样做,就像他们将统计数据存储在其他地方并在战斗中生成预制件一样。

标签: unity3dpersistence

解决方案


为什么这段代码需要附加到游戏对象上?

没有理由扩展MonoBehaviour“存储数据”并将其附加到游戏对象(然后永远不会被销毁)的东西。这是 Unity 新手的结果,每次您创建脚本时,Unity 都会自动扩展它MonoBehaviour,您会认为一切都必须附加到游戏对象并像对待一个游戏对象一样对待。你不必这样做。这是一个不扩展任何东西的类(它实现了 ISerializable,但这与这里无关)。

相反,您可能想要研究可编写脚本的对象,或者有一些其他方法来存储玩家数据(例如,您的GameManager类可能是带有静态instance引用的单例)。最适合您的项目的方法主要取决于您:您最了解自己的目标,您需要评估您的选择并找出最适合您的方法。


推荐阅读