[已发布] Cocos Creator 3.8.6 社区版公测贴【3.14】

这里有个行为要注意一下:

如果 setWorldPosition 的时候,当前节点没有父节点的话,那么会直接把 world position 赋值给 local position。因此,你可以先把节点加到父节点中,然后再为其设置 world position。

另外,你的代码中, 世界矩阵 的操作用了 transform,会导致把节点的世界矩阵也改了,而你只是希望根据 local pos 计算出 world pos 的分量,理论上不应该去改 node 本身的世界矩阵,请查阅 Mat4.transform 的接口。应该是要 clone 出来进行修改。

最后,要让场景显示正常,不要为 pfbParent 实例化后的 node 设置一个大的世界坐标,否则相机无法拍到。

这个建议修改你的代码,问题原因是 remove的时候,你执行了dec的操作,这个会触发native平台 skeletonData的释放;但是reuse的时候先设置了setParent,此时正处于update的逻辑,但是因为节点复用,节点使用了一个已经被释放过的 skeletonData对象。
demo也可以改成 setParent前,先保证skeletonData已经创建并设置给spine。
或者重用节点的时候,Skeleton组件不要重用,先执行 removeComponent(sp.Skeleton)

,main名字并没有定死,你改下你本地目录的名字就可以了吧?

我知道怎么回事了,我这边构建时主包压缩类型选择的是小游戏分包构建时子包里面就有main,支付宝小游戏的主包类型选啥合适,我是觉得主包太大了才选择主包为小游戏分包的

这个接受不了啊 3.8.6非原生没问题。引擎不能保证原生和非原生实现一致吗

好的,多谢,我修改一下代码

我新建一个空项目,未添加任何资源脚本,场景也没有添加节点,但是帧率会时不时掉到40几50帧,我把功能裁剪里能取掉的都取掉了,还是一样的情况,通过手机微信扫一扫

小心,手机有cpu智能调度,
保证电量,关省电模式,开高性能
同时手指不断触屏,激活系统调度

image

前面获取了length,如果在updateRenderer过程中新标记markDirtyRenderer的元素会被跳过,当然可以通过下一帧再标记markDirtyRenderer来规避,只是开发过程中遇到问题奇奇怪怪,一下被恶心的到了。

提过很多次了,demo也发过,git上issue也发过,一直不改。3.8.5还改了编辑器的刷新,导致这边hack代码都很恶心

3.8.5还是3.8.6已经做修复了

:+1:,查看3.8.7的代码是修复了
image

新版已经解决了

image ,必须设置为小游戏分包,因为代码量已经超过4M。 支付宝小游戏不让子包名称为main。所以看看引擎是否可以在导出支付宝小游戏的时候支持改这个名称。

这个是支付宝小程序官方给的报错提示
package::invalid_name

× invalid subpackage name:
│ name: main
help: subpackage name cannot be one of ‘main’ and ‘workers’

没修完,这里还是有bug的,已经标记为dirty的更新过后就不会再标记为dirty了,导致渲染状态不会更新,你要是有做图片背景跟随文字长度自适应就知道了,这边update完要把自己的internalId重置才对

懂你意思了,也就是所渲染对象在同一帧刷新两次是吧?

为什么在spine节点onDisable时主动设置 skeletonData = null; 也不行?在ts层代码看来,已经完全释放 skeletonData 的引用了啊

3.8.5的 绘制物理调试信息位置不对,之前3.8.2是正常的。
当开启PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Shape;后。
物体在v3(0, 0, 0)的位置,调试信息却跑到了左下角。
新建个工程加入个Rigidbody2D 就能重现