Cocos creator实现《战机长空》关卡本地存储功能

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实现《战机长空》关卡本地存储功能。描述可能不是特别准确,请见谅。

学习记录,每天不停进步。

战机长空
在这里插入图片描述

相关推荐

  1. CocosCreator3.x相机实践

    2024-05-11 04:18:05       7 阅读
  2. 实现本地存储函数useLocalStorage

    2024-05-11 04:18:05       41 阅读
  3. uniapp中使用LocalStorage实现本地存储缓存数据

    2024-05-11 04:18:05       23 阅读
  4. 关于MSSQL存储过程的功能和用法

    2024-05-11 04:18:05       37 阅读
  5. Vue 本地存储

    2024-05-11 04:18:05       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 04:18:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 04:18:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 04:18:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 04:18:05       20 阅读

热门阅读

  1. 笔记2024

    2024-05-11 04:18:05       10 阅读
  2. Python入门系列-03 matplotlib库安装

    2024-05-11 04:18:05       13 阅读
  3. Rancher简介

    2024-05-11 04:18:05       12 阅读
  4. Ansible

    Ansible

    2024-05-11 04:18:05      11 阅读
  5. php 修改 文件权限 函数chmod()

    2024-05-11 04:18:05       11 阅读
  6. webpack

    webpack

    2024-05-11 04:18:05      12 阅读