[CocosCreator]本地存储踩坑记录

在使用CocosCreator开发的小游戏中,由于微信小游戏需要软件著作权,开发者尝试先将其发布到AppStore。过程中遇到本地存储判断错误的问题,导致游戏无法正常运行。错误源于在iOS环境下,本地存储获取到的数据在空判断时需要考虑null情况。解决方案是检查本地存储数据是否为空字符串、null或空对象。更新后的代码示例展示了正确的处理方式,确保了游戏在不同平台上的兼容性。
摘要由CSDN通过智能技术生成

之前用CocosCreator写了一个小游戏,因为微信小游戏需要软著,所以想先发布到AppStore上,没想到耗了一晚上踩了个坑,故记录一下。

错误日志(这是解决后复现的,错误原因不一致,但是根源是一样的):

ERROR: TypeError: null is not an object (evaluating 'this.localLevelsconfig.length'), location: src/project.js:93:50
STACK:
dataHandle@src/project.js:93:50
setup@src/project.js:100:16
src/project.js:115:8
src/cocos2d-jsb.js:28061:7
src/cocos2d-jsb.js:27955:7
src/cocos2d-jsb.js:36758:2
fireTimeout@jsb-adapter/jsb-builtin.js:2191:24
tick@jsb-adapter/jsb-builtin.js:2148:14

项目使用本地存储通过信息,首次进入游戏需要判断本地存储是否有记录,然而let localData = cc.sys.localStorage.getItem(LocalKey);获得的localData在CC编译器中为空即可,可构建成iOS项目时,则需要判断为null,所以导致首次处理本地存储的逻辑没有运行,并且后续读取本地储存并不是我预设的数据结构而导致的。

2020.12.19 更新
正确写法:

let bossRecordCheck = cc.sys.localStorage.getItem(FMLocalBossRecordKey);
if (localData === '' || localData === null || localData === "") {
//表示数据为空,也就是首次打开
}

另一种写法,还未测试:

let bossRecordCheck = cc.sys.localStorage.getItem(FMLocalBossRecordKey);
//如果为空,初始化
if (! bossRecordCheck) {
//表示数据不存在
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值