版本: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!")
}