3.5升级倒3.6后兼容问题

当前版本:v3.6.0
之前正常的版本 v3.5.0
系统:macOS 12.2.1

1.cc.sys.localStorage 导致构建失败,几乎所有挂在节点上的项目脚本都丢失了,而编辑器运行则没事。
构建过程中会提示一个警告:cc.sys.localStorage.getItem is not a function 。这里有一点令人费解,这里确实是看到一条警告,构建也确实是成功了,但是场景启动就说脚本丢失错误。我们排查了好久才怀疑这条警告(因为之前也有循环引用的警告,脚本构建后丢失,像极了循环引用导致的问题,所有优先尝试解决循环引用,最后发现问题没解决,才怀疑localStorage)。所以,这个警告似乎更应该改成错误吧,如果单纯的警告,但是又构建成功,并且还运行失败,多少会让人没法第一时间抓住重点。最后我们注释掉了localStorage相关代码,构建一切正常。。。。
2.还是这个localStorage的问题,在编辑器下提示[Scene] Warning: localStorage isn’t enabled. Please confirm browser cookie or privacy option。不知道这个需要在哪里设置才能去掉这个警告。
3.如果我们直接用 window.localStorage可以正常构建,运行也正常,但是编辑器会提示错误 [Scene] Error: Failed to read the ‘localStorage’ property from ‘Window’: Access is denied for this document.导致用到过关联脚本的组件脚本无法在 AddComponent 列表中找到,改成cc.sys.localStorage 就恢复正常了,但是cc.sys.localStorage会导致构建出来后无法正常运行。
这个localStorage的问题要怎么解决才行呢?

最后还有个问题想请教社区,有没有一种可能,咱们直接把3.x 的2d 项目降级倒2.x。目前感觉在选择版本的时候有点草率了,结合
1:选新不选旧
2:3.x 会持续迭代更新
3:2.x 会长期维护,但是会持续更新
4:团队持续开发新项目需要在编辑器版本上也有持续的更新,避免后续切换版本带来的额外不可控因素
最终选择了3.x

3.x 貌似在2d 方面并没有继承2.x,反而性能是下降的,就算是3.6,看了官方的对比图,在微信上,iosWechat 也弱了一大截。。。

3.6之前测试了那么久,正式发布就立马踩雷,多少让我们心里有点慌。。。不升级也不行,不升级就意味着3.5 2d 性能更差

新的2d项目我也是用的3.5,性能跟2.x比差很多吗

性能我们主要是参照了官方的对比,不过我们在 iOS 上确实感觉不太行,所以现在也是想办法自身方面做更多优化了

这么尴尬的,第一次用cocos做重度项目,就想着用官方一直更新的版本能稳定不少吧,现在都已经开始进入正常开发流程了,突然有点慌 :rofl: :rofl:

别方,我们是小游戏平台,原生平台看数据还是可以的

我们也要上小游戏的

原生项目建议2dx

我们主要方向是小游戏,但是也考虑出原生包的


据说,iosWechat的问题会在3.6.1修复

我一直是做2d游戏的,从我的角度来看,3.x是大退步的版本

但是从cocos的角度来看,3.x虽然2d退步了,但是3d进步了嘛。毕竟不能把用户限定在游戏开发者这么狭小且快要死了的领域,当然是要面向各个行业发展用户才有前途,只是现阶段2d,3d都没有做好,比较尴尬.

5千万的投资,现阶段没做好不怕,用钱砸也能砸出来,以后肯定是越来越成熟的。只是,也离我这种专搞游戏的小团队越来越远了

我们现在用的3.5加fgui,反正是刚立项,如果后面3.6的2d性能更好的话就上3.6,3.5真扛不住就会退到2.4的版本,也就底层框架代码有引用cc相关的api,功能模块会做到跟cc一点关联都没有,改起来也没那么麻烦 :slightly_smiling_face:

2dxjs貌似也能上小游戏啊 我同事做过

我也遇到这个问题了,找到原因是,在class的constructor()构造方法里调用了sys.localStorage,只要将调用的语句移到其他方法里就没问题了。
需要注意的是,这个警告可能会报多个,是因为多个class的constructor()都直接或者间接调用了sys.localStorage,全都要移到其他方法中。
类似的问题也出现在使用第三方库时,在构造方法中调用,会报错说找不到,移到其他方法里就行了。
我猜测是因为构造方法执行时,cocos还没有初始化完毕导致的。

1赞