[muzzik分享]:2.x转3.x问题记录

距离公司项目升级已经过了一段时间了,这里说说自己遇到的坑!

  • 模块内不能导出非const变量

  • 模块内不能存在未导出枚举

  • 组件属性定义不能直接引用this

  • 2d多边形碰撞体坐标数据丢失

  • 2d碰撞器回调监听由自动改为手动

  • 碰撞回调内不能操作包括但不限于collider内的所有属性,比如不能removeParent()

  • bmfont字体丢失:转换到3.x之前请确保 *.fnt 文件 和 同名 字体图片在同一路径下,否则会造成丢失

  • 物理材质会重置

  • 原本的预制体内scrollview滑动失效,但新建的可以

  • 动画结束后属性数据还是动画播放之前,重新设置无法更新(例:动画开始前颜色为 255,255,255、结束后为0,0,0、那么停止动画后重新设置动画为255,255,255无效)

  • 动画color属性丢失

  • 3d模型离0,0,0点越远,用 setLinearVelocity 设置速度后移动越卡,仅在公司项目可重现,demo未重现

  • label 组件未展示内容,节点必须存在transform组件

  • 节点层级改变后 rotation 和 scale 偶现被置空或者置零导致节点消失,仅公司项目可重现,demo未重现

  • 部分动态实例化的节点挂载的龙骨无法看见,只有放在场景上能看见,2.x无影响

  • 编辑器无法识别部分龙骨动画的 tex.json文件,清理第一遍缓存后重试无效,清理第二遍后可以识别

  • 对龙骨挂点执行 cc.tween(node).to(time, { scale: cc.v3() }).start() 无效,onUpdate 内 setScale一样无效,同时挂点无法跟随龙骨缩放,只能跟随位移

  • 部分中文路径资源无法加载,偶现

  • 原生和web不同步的地方,原生audioSource没有依赖节点会报错,原生节点无父节点设置刚体分组会卡主

  • cc.macro.CLEANUP_IMAGE_CACHE开启会导致龙骨播放异常,2.x则不会

  • 3d环境光组件改变到场景节点上了,旧的需要删除,否则原生报错


附加

  • 个别场景升级后永远无法保存,打开项目提示保存,打开场景提示保存,但保存后creator标题栏始终有代表未保存的 * 符号
4赞

另外如果有使用升级工具的,建议修改其中的 ts 和 js 导入模块,在所有模块前加上 import * as cc from “cc” 和 import * as env from “cc/env”,如果有精力也可以把迁移的平台标识比如 cc.sys.xx 替换为 3.x 的 cc.sys.分类.xx 这种类型

1赞

该死的网友,技术这么强,精力竟然如此充沛

2赞

怕你们国庆没班加 :speak_no_evil:

1赞

感觉这个不能removeParent()是可以理解的,比如 A 和 B 碰撞, A 和 B上都挂有碰撞回调,如果A的回调先执行,在里面removeParent(),那 B 的碰撞回调就会出错了,B 的回调应该是由碰撞管理器调用的,removeParent()又没有通知碰撞管理器别执行 B 的回调了

说到位图字体, 最近我的3.x项目使用位图字体,发现我的 位图字体工具 还可以用 :rofl:

老哥威武!收到收到

看到你这个列表都不敢升级了。