目前,我有一个系统,我可以在结构中记录游戏 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/