本帖最后由 taroxd 于 2017-5-6 16:22 编辑
请先阅读 F1 中关于 load_data 和 save_data 这两个函数的说明,这样你应该就能明白 Marshal.dump 并不会因为保存次数的增多而增大。出现这种现象可能是因为某些插件脚本在游戏过程中产生了冗余信息没有清除。
存档使用 Marshal.dump 而不用 save_data 是因为这样可以将存档数据分两块(或更多块)写入。在存档的前半部分存放了一些存读档界面会显示的元数据,而真正的存档内容放在下一块中。这样做可以使得读取那些元数据时不需要读取整个存档文件。
# 下面这段代码是无法用 save_data 实现的 File.open 'Save.rvdata', 'wb' do |f| Marshal.dump header, f Marshal.dump contents, f end
# 下面这段代码是无法用 save_data 实现的
File.open 'Save.rvdata', 'wb' do |f|
Marshal.dump header, f
Marshal.dump contents, f
end
|