所以我做了很多研究,长话短说,决定让游戏管理员使用dontdestroyonload来保持持久性。
有很多教程,但是我是新手,在实际实现这一点时,我脑子里有很多疑问。当您只有一个角色时,这很容易,但是我的游戏中只有一群玩家,他们的预制件只需要在战斗中生成,那么当战斗结束时,我就不需要他们的模型...只需他们的统计数据。
因此,如果我将我的所有聚会成员都附加到游戏管理器中,它将保留他们的统计信息,但同时还保留其他所有信息:模型,战斗脚本等。我只需要保留他们的统计信息即可。那么其他人在实践中如何做呢?
我当时正在考虑添加代码以销毁不需要的脚本和组件,然后在战斗触发时重新附加它们,但我只是觉得它很hacky,而我却缺少一个更好的既定解决方案。我看过专业包装,却从未见过有人这样做,就像他们将统计数据存储在其他地方,只是在战斗中生成预制件一样。
答案 0 :(得分:0)
没有理由将MonoBehaviour
扩展为“存储数据”并将其附加到GameObject(此后再也不会销毁)。这是对Unity陌生的结果,每次创建脚本时,Unity都会自动将其扩展MonoBehaviour
并使您想到所有内容都必须附加到游戏对象上并被视为一个对象。您不必这样做。 Here's a class不会扩展任何内容(它实现了ISerializable,但在此不相关)。
相反,您可能想研究scriptable objects,或使用其他方法来存储玩家数据(例如,您的GameManager
类可以是具有静态instance
引用的单例) 。最适合您的项目的主要取决于您:您对目标最了解,您需要评估您的选择并找出最适合您的项目。