本帖最后由 RyanBern 于 2015-11-4 15:05 编辑
在这里我假设你的存档是统一管理的,它们都被放在一个文件夹中(例如根目录/Saves)。如果不是这样,请自行修改存档的路径,如果直接将档放在根目录下处理有些麻烦。
然后就是如何读取文件的问题。利用下面的方法可以取出一个文件夹下的所有文件
Dir.foreach("Saves")do |s| filenames << s if s != "." && s != ".." end
Dir.foreach("Saves")do |s|
filenames << s if s != "." && s != ".."
end
然后就可以根据存档文件名进行读取了,filenames是一个存档文件名的数组,读取就先open一下,读取信息可以参考Scene_Load里面的方法进行读取。
描绘内容应该不难,如果你能熟练使用各种窗口的话。如果这方面不是很懂,可以熟悉一下窗口绘制。
循环切换你只需要利用filenames数组即可,如果它为空,则就是没有存档,直接显示"无存档"。
刚才看了一下脚本,说说我发现的问题。
1.
filenames = [] Dir.foreach("Saves")do |s| filenames << s if s != "." && s != ".." end
filenames = []
Dir.foreach("Saves")do |s|
filenames << s if s != "." && s != ".."
end
上面那句话的作用是把Saves文件夹中所有的文件都取出来,放到一个数组里,这个数组使用之前一定要初始化,即加上filenames = [],否则会发生错误。这段脚本的作用一定要明确。
2. 经过实践表明,如果将存档的文件名改为角色的名称,那么需要对存档数量进行破限,详情请搜索有关脚本,实现比较麻烦。如果只有四个档位,那么有可能会发生读不了某人的存档的情况。当然,如果你在存档的时候限制了存档个数,那么可以不必看前面那一段话。同时,如果角色的名字是中文的,不确保游戏能找到存档文件,所以这也是个比较麻烦的问题。刚才试验了一下确实找不到。
3. 更改make_filename方法的做法是正确的,但是切记这个方法一定要放在Scene_Save下,而不要直接在Scene_File上改,因为在读档的情况下这个规则需要变一下。
class Scene_Load def make_filename(file_index) if @filenames == nil @filenames = [] Dir.foreach("Saves")do |s| @filenames << s if s != "." && s != ".." end end return @filenames[file_index].nil? ? "" : "Saves/" + @filenames[file_index] end end
class Scene_Load
def make_filename(file_index)
if @filenames == nil
@filenames = []
Dir.foreach("Saves")do |s|
@filenames << s if s != "." && s != ".."
end
end
return @filenames[file_index].nil? ? "" : "Saves/" + @filenames[file_index]
end
end
4. 由于你是一键存档,所以可以不必真正进入Scene_Save画面。
一些小错误我已经改过来了。请查看附件。注:当存档文件名含有中文时,该脚本无法正常工作。
Scripts.rxdata
(118.91 KB, 下载次数: 51)
|