如何获取Asset对应资源的url?

现在有个SpriteFrame的对象,想要获取对应图片资源的url怎么获取?没看到有相关接口

在游戏运行内还是编辑器内

let spfUUID= sprite.spriteFrame["_uuid"];
let assetsInfo = bundle.getAssetInfo(spfUUID);  // spf所在bundle

如果是想实现这种效果的话,那只能借助 Editor 的路径查找:

asset-db 里面的 query-url
查询一个资源的 URL
uuid {string} 资源的 UUID
@returns {string} 返回一个资源的 url
image

getPath(asset: any): string {
let assetMap = cc.assetManager.assets[’_map’];
let uuid = null;
for(let key in assetMap){
if(assetMap[key] === asset){
uuid = key;
break;
}
}
if (uuid === null) return null;
let bundles = cc.assetManager.bundles[’_map’];
for (let key in bundles) {
if (key === ‘internal’ || key === ‘main’ || key === ‘resources’) continue;
let infoMap = bundles[key]._config.assetInfos._map;
if (infoMap[uuid] !== undefined) {
return infoMap[uuid].path;
}
}
return null;
}


使用示例:
let path = this.getPath(this.node.getComponent(cc.Sprite).spriteFrame);

1赞

感谢回复,原本目的是通过资源文件名来自动处理图片的切换,例如按钮btn_1.png和btn_1_disable.png,后面直接通过uuid处理了