【发布时间】:2012-12-27 08:21:04
【问题描述】:
过去几周我一直在 XNA 中创建游戏。在这个过程中,我在没有完全理解问题的情况下,试图在遇到问题之前解决它。
那个问题是我将如何处理保存和检索“蓝图”对象。由于我正在制作内容创建者(游戏是基于内容的),因此我需要此功能。所以目标是,我创建内容(粗略的例子,一个具有 100 生命值的“地精”类型的敌人和一个地精精灵),将其保存到序列化对象中,将其加载到游戏中,然后它可以在游戏中使用和复制-游戏。
现在很明显,当对象具有像 Texture2D(精灵)这样的不可序列化的东西时,你不能序列化它们。我通过将我的所有纹理添加到静态类并仅存储对象中纹理的索引(例如,不包含 Texture2D 属性, Goblin 将包含一个链接到适当纹理的索引 - 有点过于简单,但你明白了)。
但是随后病毒传播了,我开始对所有对象引用都这样做。例如,地精也需要对 AI 对象的引用。该 AI 对象只有方法,因此显然是可序列化的,但我将它存储在与纹理相同的静态类中,并通过 index.html 链接到它。现在回想起来,我不禁不寒而栗。
所以我的问题是,除了纹理之外的所有内容都应该通过直接引用存储在可序列化类中,而不是通过索引引用吗?或者有没有可行的理由去做我所做的事情?
序列化是一项棘手的工作,我正在努力思考使用它的最佳方法以及避免它的正确时间。
【问题讨论】:
-
另外,我不怕听到冷酷的事实(我犯了一个可怕的错误)。作为我的内容创建工具加载和保存对象的一种方式,我的静态类仍然很方便。
标签: c# serialization reference xna-4.0