|
- --查利猫存档系统
- function SaveTableContent(file, obj) --不包含物品数据的存档数据类型判断
- local szType = type(obj); --判断对象类型
- if szType == "number" then --如果类型是数字
- file:write(obj); --直接写入
- elseif szType == "string" then --如果类型是字符串
- file:write(string.format(""%s"", obj)); --以字符串形式写入
- elseif szType == "table" then --如果类型是表格
- --把table的内容格式化写入文件
- file:write("{"); --首先写入一个{
- for i, v in pairs(obj) do --逐个元素判断
- SaveTableContent(file, v);
- file:write(",");
- end
- file:write("}"); --写入最后一个表格数据的时候换行
- else
- error("can't serialize a "..szType);
- end
- end
- --以上是查理猫写的函数,我进行修改后的版本
- --由于是递归调用函数,'\n'最好是自己添加
- ———————————————————————————————————————————
- --要做到随存档存档,那么找到function SaveRecord(id)添加代码即可
- --打开一个文件,id是存档编号
- local file = io.open(CONFIG.DataPath.."someData"..id..".lua", "w");
- --运用方法:
- --1维Table保存
- CC.oneDimTable={1,2,3};
- file:write("CC.oneDimTable="); --需要手写table名字
- SaveTableContent(file,CC.oneDimTable);
- --2维table保存
- CC.twoDimTable={{"hello",123},{"world",456}};
- file:write("\nCC.twoDimTable="); --加上自己写的\n
- SaveTableContent(file,CC.twoDimTable);
- file:close(); --最后记得close file
- ———————————————————————————————————————————
- --存档就需要读档,那么找到function LoadRecord(id)添加
- dofile(CONFIG.DataPath.."someData"..id..".lua");
- --这里要注意,新开始游戏会读id为0的档,所以要么写一个初始档,要么加一个判断
复制代码 这只是一个方法,还可以修改数据结构将数据存入r,请参考苍龙lua源码jyconst.lua。 |
|