Defold 游戏开发笔记 04

Defold

这两天加上了储存和载入功能,似乎可以开始利用这编辑器设定敌人的移动路线了。

一开始我用了sys.save/sys.load 来进行有关的操作:

local path = {}

。。。

local success = sys.save(sys.get_save_file("BoxShooter", "enemy_path"), path)

。。。

local path = sys.load(sys.get_save_file("BoxShooter", "enemy_path"))

这两个系统功能相当好用,可以很方面地存取一个 table,但后来我发现它们是把资料存放到游戏所拥有的空间的,不知道存的档案是什么格式,也不能把档案提取出来当为资源,然后放到游戏包里拿来用,基本上只适用于存取游戏进行时的资料,比如用户的进度设定等等。

想把资料存为可以再用的档案资源,还是要用低端一点的 io 库,为了以后用起来方便,我也以 json 的格式储存有关的资料,这样子就算手动更改也可以:

local f = io.open("path.json", "r")

local str = f:read("*a")

local path = json.decode(str)

f:close()


local f = io.open("path.json", "w")

local version = 0

f:write(string.format('"version":%d,\n', version))

。。。

f:flush()

f:close()

而这里也发现了 Defold 的一个短板,系统里竟然只有 json.decode 而没有 json.encode !所以我只好用最简单的 json 结构来记录画出来的路线,在存档时自己按着 json 的格式写进去。

今天还发现一个有趣的事,一般我习惯了用 "#" 来数 table 里有多少东西,如果返回是0就代表它是空的,但原来如果 table 里的 key 没有一个是数字的活,就算里面有东西 "#" 也会返回 0 !正确测试 table 是不是空的,应该如下面这样子做:

if not next(mid_points) then

    print("It's empty")

end


测试

你可能感兴趣的:(Defold 游戏开发笔记 04)