现在有个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
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处理了