c# - 一种避免浪费内存的方法

标签 c# xna

目前,我有一个系统,我可以在结构中记录游戏 handle 状态,并将其存储在状态列表中,以记录视频游戏期间的输入。 pad 的完整状态每帧占用 192 位,但这有点浪费。例如,如果垫上的模拟触发器没有被按下,它们仍然占用 32 位,每个,在存储中。很明显,我希望节省一些空间。

我曾尝试将其设置为 NULL,但它似乎对系统在比赛结束时保存的二进制文件的大小没有影响。

在您只需要记录或保存某些值但保留数据结构的完整性的情况下,有哪些替代方案可用?

编辑:

我想我已经找到了解决办法;各种各样的。早些时候,我尝试通过在结构中使用 System.Nullable 覆盖标准 float 来将值设置为 NULL。我的想法是在结构中将其设置为 NULL 值将序列化得更小。我的印象是 NULL 被记录为 4 位。可能更多,可能是。不管怎样,我之前的代码有一个相当明显的错误,所以我回去重新修复了它。现在我得到的回放要小得多,而且准确性似乎也一样好,所以我假设 NULL 欺骗正在做一些正确的事情。

最佳答案

我认为不在结构中。您可能需要更复杂的协议(protocol)。

例如(非常粗略,没有经过深思熟虑)(WHAT 3xough):

第一个字节包含 8 个按钮的状态,每个按钮一个位。如果某个按钮的位设置为 1,则客户端(我现在称它为客户端)需要按特定顺序为该按钮提供更具体的数据,例如方向等。

关于c# - 一种避免浪费内存的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569635/

相关文章:

c# - AddScoped 服务不会在整个请求过程中保留设置

c# - XNA 如何创建单独的 ContentManager?

c# - 方法来回 'rock'一个值

c# - 了解随机二维方向矢量生成

C# 代码提供程序 : Add reference to XNA?

java - java 8中的.net列表分组依据?

c# - 即使在实现 IEnumerable 时也没有显示扩展方法

c# - 使用 Selenium 在现有浏览器 session 中打开一个新选项卡

c# - XNA 中的战术角色扮演游戏

c# - 将所有图像缩放至控制台尺寸 XNA