3.6 SpriteAtlas/SpriteFrame问题(name 不正确)

版本:cocos creator v3.6
相比版本: 3.5


如图,这个版本的静态图集中,SpriteFrame 自己的 name 属性没有正确赋值,看起来是是用了 SpriteAtlas 的名字。
这个直接导致了基于 SpriteFrame.name的逻辑无法正常工作。。。

顺便附上我们目前使用的修复补丁逻辑
在程序代码的入口位置加上即可

import { SpriteAtlas, VERSION } from "cc"
if (VERSION == "3.6.0") {
    let oldOnLoad = SpriteAtlas.prototype.onLoaded
    let newOnLoad = function () {
        oldOnLoad.apply(this, [])
        let sa = this as SpriteAtlas
        let keys = Object.getOwnPropertyNames(sa.spriteFrames)
        for (let i = 0; i < keys.length; i++) {
            const key = keys[i];
            sa.spriteFrames[key].name = key
        }
    }
    SpriteAtlas.prototype.onLoaded = newOnLoad
    console.debug("cocos sprite atlas bug patched!")
}
1赞

抱歉,已告知相关人员

1赞

什么时候改好哇,我也遇到这个问题了,3.6.1 版本这个问题还存在呢!!!spriteFrame.name的值依然是SpriteAtlas.name的值

测试 3.6.1 能获取到啊,需要怎么操作能复现你说的看不到的情况?

1赞

谢谢开发者回复。

问题:我是3.6.0出现的问题,然后将3.6.0的项目用3.6.1版本打开使用的时候问题还存在,感觉会有老版本遗留还是啥的。

解决:然后我用3.6.1的版本【新建一个项目】问题就好了。