2013年9月30日 星期一

Ice -- 存檔讀取

牢騷該該
發現雖然Corona雖然在台灣也有幾年的傳播,不過程式的資源仍然是國外居多,語言的障礙不突破真的很難摸索,努力到現在居然讀程式碼的理解力比讀英文說明還要更順利(無言)
來不專業翻譯個幾篇,算是自己的筆記。

來翻譯一篇只要是遊戲都會用到的【存檔/讀取】的code,官網程式分享的原文

回饋作者討論區──不過都是全英文的,有語言障礙就多方求助吧(像是我

此程式是用於分數排行榜、儲存設定值以及一些資料數據,簡單來說會幫你把一些資料打包存在手機記憶體中,到下次使用程式時可以讀取。


首先先載入ice.lua檔案,下方的程式3至6行是一些參數陣列設定,7行是儲存。
9行至12行就是對最高分的參數設置(ice程式中只會存取最高分的結果)
15行顯示最高分的結果在模擬器上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
require( "ice" )
 
local settings = ice:loadBox( "settings" )
settings( "difficulty", "easy" )
settings( "volume", 0.7 )
settings( "playerPosition", { x = 100, y = 45 } )
settings:save()
 
local scores = ice:loadBox( "scores" )
scores:store( "best", 100 )
scores:storeIfHigher( "best", 65 )
scores:storeIfHigher( "best", 105 )
scores:save()
 
print( scores:retrieve( "best" ) )

另外,如果是初次啟動程式,設定初始化的程式如下。

1
2
3
4
require( "ice" )
 
settings = ice:loadBox( "settings" )
settings:storeIfNew( "volume", 0.5 )
官網分享原文中有提供一個現成的程式可以直接模擬,下方我特別抽出來,是讀取分數的程式。(以下程式白話就是觸發onEnterFrame事件時,讀取player1和player2最高分數,沒有的則設置為零)

1
2
3
4
5
6
7
-- Update the score displays
local onEnterFrame = function( event )
        player1.score.text = scores:retrieve( "player1" ) or 0
        player2.score.text = scores:retrieve( "player2" ) or 0
end
 
Runtime:addEventListener( "enterFrame", onEnterFrame )
原文提供的程式下載:

沒有留言:

張貼留言