美文网首页电竞·游戏程序员
Defold 游戏开发笔记 04

Defold 游戏开发笔记 04

作者: 一個迷途小碼農 | 来源:发表于2018-01-17 21:10 被阅读0次
    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

        本文链接:https://www.haomeiwen.com/subject/ykvuoxtx.html