(NO.00005)iOS實現炸彈人遊戲(四):遊戲資料初始化介紹(一)
上一篇我們初步看了一下MainScene類的初始化方法裡都做了神馬事,其中隨機化地圖是在initGameDataFromGD方法裡做的,我們就來深入看看這個方法.
該方法是一個比較長的方法,裡面又調用了若干其他方法,我把其中主要的代碼在下面列出來:
//用遊戲資料初始化當前關卡的資料-(void)initGameDataFromGD{ [_gd loadGameData]; //省略初始化HUD層的標籤內容的一大堆代碼 _player.canAcrossBrick = _gd.canPlayerAcrossBrick; _player.canAcrossBomb = _gd.canPlayerAcorssBomb; _isPlayerSpeedUp = _gd.isPlayerSpeedUp; if (_isPlayerSpeedUp) { _player.speedPerStep = 0.4; } [self updateStateLabel]; _totalSec = _gd.curLevelLeftTime; [_hudLayer updateTimeLabel:_totalSec]; [self initNoWallTiles]; //隨機化地圖方法 [self randomCreateMap]; [self initWalkableTiles]; //初始化所有FS類的名稱 [FireSprite initClassNames]; [self spawnFireSprites3];}
該方法裡面比較”雜”,它主要做了如下這些事:
將iOS裝置中儲存的資料讀到記憶體中,這樣每次玩的記錄和內容都可以儲存和再載入,這是在loadGameData方法中完成的,後面會介紹 根據遊戲資料設定HUD層中對應的標籤,HUD是我們遊戲中的儀錶盤:
其中包括了剩餘的生命數,炸彈數,當前累積的分數,當前炸彈的威力大小,遊戲剩餘的時間等等標籤.在實際遊戲中顯示如下:
最左邊那列豎條實際是顯示在螢幕可見範圍之外,需要的時候在彈進來,這裡先不用管吧.
根據遊戲資料設定遊戲主角的屬性:是否可以穿牆和穿炸彈,是否處於高速移動狀態 更新HUD中的狀態標籤,調用的是updateStateLabel方法,後面會提及 接下來初始化可布局的所有瓦塊座標,調用的方法是initNoWallTiles方法 然後調用randomCreateMap來建立隨機地圖,別急馬上就會講到 初始化所有可達的瓦塊,調用的方法為initWalkableTiles方法 初始化FireSprite敵人類中的所有類名稱 根據關卡中的資料”產出”敵人,調用的是spawnFireSprites3方法