Defold 游戲開發(fā)筆記 04

Defold

這兩天加上了儲存和載入功能,似乎可以開始利用這編輯器設(shè)定敵人的移動路線了。

一開始我用了sys.save/sys.load 來進(jìn)行有關(guān)的操作:

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"))

這兩個系統(tǒng)功能相當(dāng)好用,可以很方面地存取一個 table,但后來我發(fā)現(xiàn)它們是把資料存放到游戲所擁有的空間的,不知道存的檔案是什么格式,也不能把檔案提取出來當(dāng)為資源,然后放到游戲包里拿來用,基本上只適用于存取游戲進(jìn)行時的資料,比如用戶的進(jìn)度設(shè)定等等。

想把資料存為可以再用的檔案資源,還是要用低端一點(diǎn)的 io 庫,為了以后用起來方便,我也以 json 的格式儲存有關(guān)的資料,這樣子就算手動更改也可以:

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()

而這里也發(fā)現(xiàn)了 Defold 的一個短板,系統(tǒng)里竟然只有 json.decode 而沒有 json.encode !所以我只好用最簡單的 json 結(jié)構(gòu)來記錄畫出來的路線,在存檔時自己按著 json 的格式寫進(jìn)去。

今天還發(fā)現(xiàn)一個有趣的事,一般我習(xí)慣了用 "#" 來數(shù) table 里有多少東西,如果返回是0就代表它是空的,但原來如果 table 里的 key 沒有一個是數(shù)字的活,就算里面有東西 "#" 也會返回 0 !正確測試 table 是不是空的,應(yīng)該如下面這樣子做:

if not next(mid_points) then

? ? print("It's empty")

end


測試
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容