【已正式发布】CocosCreator 3.8.7 社区版本公测帖

确实是这样,感谢

“fixAlphaTransparencyArtifacts”: false, 消除伪影
这个属性对远程下载的图片需要怎么设置


spine播放异常,循环播放时,第一个周期箱子莫名消失一下(有打印警告),后面的周期正常
test387.zip (128.3 KB)

同样遇到了,部分spine 会出现这个问题,spine 版本用的3.8.96

@song2008_2001 关注一下我们的问题,给个反馈


spine版本3.8.99, 这个spine动画是每个循环都有异常,上面demo那个是第一个循环有异常 @song2008_2001

第一次启动才会?在浏览器预览出现的?

第一次开始播放后会黑一下,然后循环播放正常,在Android真机上正常,在浏览器才会出现

手机浏览器也正常?

手机浏览器也会黑一下,但是没有警告,nickmk给了一个demo可以试试

是的,电脑浏览器,手机浏览器,手机微信浏览器的情况是一样的,apk没有问题。上面压缩包是demo

js_cc_middleware_MiddlewareManager_update崩溃问题,建议参考 cocos 2.x 最新代码。

使用layout+多个label渲染,最终效果如图

        this.skillDescCtn.removeAllChildren();
        const values = [[30,2,4,20],[30,2,4,23],[30,2,4,26],[30,2,4,29],[30,2,4,32]];
        const desc = '宙斯投射闪电枪,对最近敌人造成<color=#62B14E>{0}%</color>伤害,弹射<color=#62B14E>{1}</color>次,并造成<color=#62B14E>{2}</color>秒<color=#EA7600>麻痹</color>,每秒造成<color=#62B14E>{3}%</color>麻痹伤害';

        for(let i = 0; i < values.length; i++){
            // 2. 格式化字符串:将 {0}, {1}... 替换为真实数值
            let formattedString = desc.replace(/{(\d+)}/g, (match, index) => {
                const valueIndex = parseInt(index, 10);
                return values[i][valueIndex] !== undefined ? String(values[i][valueIndex]) : match;
            });
            // console.log(formattedString);
            const regex = /(<color=.*?>.*?<\/color>)/;
            const segments = formattedString.split(regex).filter(text => text); // filter(text => text) 用于移除空字符串
            // console.log(segments);
            const descNode = instantiate(this.descItem);

            // 4. 生成 Label 节点
            for (const segment of segments) {
                const colorTagMatch = segment.match(/<color=(.+?)>(.+?)<\/color>/);
                
                let textContent: string;
                let textColor: Color | null = null;

                if (colorTagMatch) {
                    // 这是带颜色标签的片段
                    const colorHex = colorTagMatch[1];
                    textContent = colorTagMatch[2];
                    // 尝试将十六进制颜色字符串转换为 Color 对象
                    try {
                        textColor = new Color().fromHEX(colorHex.startsWith('#') ? colorHex : '#' + colorHex);
                    } catch (e) {
                        console.warn(`无效的颜色值: ${colorHex}`, e);
                        textColor = Color.WHITE; // 使用默认颜色作为后备
                    }
                } else {
                    // 这是普通文本片段
                    textContent = segment;
                }

                // 5. 实例化并配置 Label 节点
                const labelNode = instantiate(this.textItem);
                const labelComponent = labelNode.getComponent(i18nLabel);

                if (labelComponent) {
                    labelComponent.string = textContent;
                    if (textColor) {
                        labelComponent.color = textColor;
                    }
                    // 你可以在这里设置模板原有的默认颜色
                    // else { 
                    //     labelComponent.color = Color.WHITE; 
                    // }
                    
                    labelNode.setParent(descNode);
                } else {
                    console.error("模板节点 'descItem' 上缺少 Label 组件!");
                }
            }
            descNode.setParent(this.skillDescCtn);
        }

image

请先修改 spine/assembler/simple.ts ADJUST_SIZE_RATE 这个值调大点,可以调1.5看下,我试过1.8没有报错。这个之前是为了修复多个实例合批引入的。会再下个版本修复


我直接找的了你说的ts脚本,改了值,但是好像没啥用。
是我哪个操作不对吗?

要把engine仓库下,bin/.cache 删除


这个是正式的修复 PR

[.WebGL-0x440bc700] GL_INVALID_OPERATION: Error: 0x00000502, in …\third_party\angle\src\libANGLE\renderer\d3d\VertexDataManager.cpp, rx::VertexDataManager::reserveSpaceForAttrib:523. Internal error: 0x00000502: Vertex buffer is not big enough for the draw call.

能解决单个spine 播放时候的问题,但是多个不同spine 播放的时候还是会出现问题,

会报这个错

这个是在windows出现的? 引擎上能复现?