如何在.love保存文件之外加载? (love2d + LUA)
我编写编辑器和游戏,它需要一个保存游戏选项。 我只想在游戏文件夹中使用保存文件夹。不在inside.love如何在.love保存文件之外加载? (love2d + LUA)
如何得到一个错误。
- 开始游戏
- 通过ESC键
- 进入菜单按保存游戏 - 这创造秘技
- 按装载游戏 - 你得到一个错误“文件不存在”,但你秒前写这个文件。
我成功的将游戏保存到savedm2k文件夹中,但它夹在.love文件外,我不知道如何正确加载保存游戏。
发动机:Love2d 0.10.2 操作系统:Linux Mint的18.1 x64bit
我看了很多手册和我被困。
对于加载保存游戏我用这个命令
lsg=love.filesystem.getSaveDirectory().."/M2k-Saves/m2ksave"
lsg=love.filesystem.getSourceBaseDirectory().."/M2k-Saves/m2ksave";
data, size = love.filesystem.read (lsg);
leveldatacopy=freadbin (data);
程序为何不尝试读取现有的文件吗?并且报告不存在?我尝试使用另一个命令,但使用GetSaveDirectory破坏函数WriteMAP(需要二进制映射和数据写入)等,但它写入文件,无法加载在加载部分。
也许我应该使用LUA直接从文件夹读取文件,但我不知道如何纠正它。
有错误的例子。 https://github.com/dj--alex/m2ktest 文件m2ktest-load-savegame-test.love
此时每节约我手动替换爱情存档内保存的游戏(!)。这是不正常的。
任何人都可以告诉我我如何得到和正确打开保存的文件?不是从.love文件里面。当然,从外面。如果级别和配置可以从爱情档案里面保存,那么保存文件必须在外面。我只能创建爱档案以外的档案。我知道爱情档案是一个zip档案。
如果需要,我可以发布.love文件,但游戏完全完成,并有150kb的干净的代码。
您不应在love.filesystem.getSaveDirectory()
或love.filesystem.getSourceBaseDirectory()
前加上路径。这是自动完成的,内部为love.filesystem
函数。说
lsg = "/M2k-Saves/m2ksave"
data, size = love.filesystem.read (lsg)
leveldatacopy = freadbin (data)
应该工作,并将文件放置在保存目录/以外的.love文件或游戏目录。 (爱者禁用任何地方写,除了在保存目录。)
爱情的文件系统模型就像一个文件系统的“堆栈”。对于文件读取,它首先在love.filesystem.getSaveDirectory()
中查找你传入的任何路径。如果它找到一个文件,它使用它;否则它会在love.filesystem.getSourceBaseDirectory()
(或 - 如果打包 - 在.zip/.love文件中)内部查找。写文件总是去love.filesystem.getSaveDirectory()
,你不能写love.filesystem.getSourceBaseDirectory()
(因为它可能不是一个实际的目录,而是一个zip文件)。
不幸的是没有工作。问题依然存在。我已经试过::: lsg =“/ M2k-Saves/m2ksave” data,size = love.filesystem.read(lsg); 错误(“data:”.. data); - 总是添加校验线 - data = nil(!)。 leveldatacopy = freadbin(data); - 错误的参数#1 gfind预期的字符串,得到零。 –
@АлексейФуфаев你创建了父目录,比如'love.filesystem.createDirectory(“M2k-Saves”)'?如果你不这样做,那可能是原因。 – nobody
当然,它是在一个月前创建的。 http://s46.radikal.ru/i111/1706/be/413f6fe8ee82t.jpg –