2017-06-20 119 views
0

我编写编辑器和游戏,它需要一个保存游戏选项。 我只想在游戏文件夹中使用保存文件夹。不在inside.love如何在.love保存文件之外加载? (love2d + LUA)

如何得到一个错误。

  1. 开始游戏
  2. 通过ESC键
  3. 进入菜单按保存游戏 - 这创造秘技
  4. 按装载游戏 - 你得到一个错误“文件不存在”,但你秒前写这个文件。

我成功的将游戏保存到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的干净的代码。

回答

0

您不应在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文件)。

+0

不幸的是没有工作。问题依然存在。我已经试过::: lsg =“/ M2k-Saves/m2ksave” data,size = love.filesystem.read(lsg); 错误(“data:”.. data); - 总是添加校验线 - data = nil(!)。 leveldatacopy = freadbin(data); - 错误的参数#1 gfind预期的字符串,得到零。 –

+0

@АлексейФуфаев你创建了父目录,比如'love.filesystem.createDirectory(“M2k-Saves”)'?如果你不这样做,那可能是原因。 – nobody

+0

当然,它是在一个月前创建的。 http://s46.radikal.ru/i111/1706/be/413f6fe8ee82t.jpg –