Cocos creator实现《战机长空》关卡本地存储功能
Cocos creator在开放小游戏过程中,经常会出现设置关卡,这里记录一下关卡数据本地存储功能。
一、关卡设置数据
假如我们有关卡数据如下,
let settings = [
{
level: 1, // 第1关
score: 0, // 最高得分
duration: 240, // 倒计时时长,单位为秒s
bossBlood: 100, // BOSS血量
levelState: ‘UNLOCKED’, // 关卡状态
},
{
level: 2, // 第1关
score: 0, // 最高得分
duration: 240, // 倒计时时长,单位为秒s
bossBlood: 200, // BOSS血量
levelState: ‘LOCKED’, // 关卡状态
},
}
关卡数据中定义了level、score、duration、bossBlood、levelState等数据,当进入游戏时候,我们检测是否有关卡数据,没有的话,将settings数据进行存储。
onLoad() {
let localSettings = JSON.parse(cc.sys.localStorage.getItem('settings'));
if (!localSettings) {
cc.sys.localStorage.setItem('settings', JSON.stringify(settings));
}
}
二、选择关卡
当开始游戏后,我们需要选择关卡,选择关卡从localStorage取出当前的level信息
selectLevel() {
let currentLevelInfo = JSON.parse(cc.sys.localStorage.getItem('currentLevelInfo'));
if (!currentLevelInfo) {
if (!cc.sys.localStorage.getItem('settings')) {
// 将所有关卡信息存入本地(针对首次游戏)
cc.sys.localStorage.setItem('settings', JSON.stringify(settings));
let levelSetting = settings[0];
// 将目标关卡信息存入本地,在Game.js中取出
cc.sys.localStorage.setItem('currentLevelInfo', JSON.stringify(levelSetting));
} else {
// 如果玩家已经玩过,则从本地存储中获取关卡配置信息
let newSettings = JSON.parse(cc.sys.localStorage.getItem('settings'));
// 将目标关卡信息存入本地,在Game.js中取出
let levelSetting = newSettings[0];
cc.sys.localStorage.setItem('currentLevelInfo', JSON.stringify(levelSetting));
}
}
}
进入游戏界面,我们设置游戏的总时长,及显示当前的关卡level
// 首先获取当前关卡信息
this.currentLevelInfo = JSON.parse(cc.sys.localStorage.getItem('currentLevelInfo'));
this.levelLabel.string = "第" + this.currentLevelInfo['level'] + "关";
// 默认总时长
this.countDuration = this.currentLevelInfo['duration'];
this.interval = 1;
游戏成功后更新本地存储的最高分
if (gameResultData.isWin) {
if (gameResultData.gotStarScore > localSettings[this.currentLevelInfo['level'] - 1]['score']) {
localSettings[this.currentLevelInfo['level'] - 1]['score'] = gameResultData.gotStarScore;
}
cc.sys.localStorage.setItem('settings', JSON.stringify(localSettings));
}
效果图如下
三、小结
Cocos creator实现《战机长空》关卡本地存储功能。描述可能不是特别准确,请见谅。
学习记录,每天不停进步。
战机长空 |
---|