1.9升到2.0+后 如何获取SpriteFrame的resource路径

写了一个路径编辑器,需要把资源的路径存起来,原来用的spriteFrame的路径不能用了,现在只有一个name表示它的相对路径。url是编译后的路径。
怎么获取resource/game/logo.png存起来,用于游戏中使用cc.loader.loadRes的加载用

###目前支持cc.url.raw()这个方法

不是的亲,这个方法是把传入的参数拼接到res/raw-asset目录下,并不是想要的,我要的是
比如说文件resources/game/login.png,加载到程序里,spriteFrame.name是login.png,
我怎么从spriteFrame中获取他的完整路径,需要的是resources/game/login.png,当前,不要resoucres也无所谓

@337031709

@jare @panda @337031709

源码我都翻了,没找到

问个东西有这么麻烦么

你可以通过储存uuid,在游戏中使用uuid来load资源

我们在做多语言切换时用到这个,解决办法是需要hack一下

SpriteFrame有一个_uuid的属性,根据uuid去loader里面查找路径


public parseUuidToUrl(uuid:string){
        let pathToUuid = cc.loader["_resources"]._pathToUuid;
        for (let key in pathToUuid){
            let entrys = pathToUuid[key];
            if (entrys instanceof Array){
                for (let entry of entrys){
                    if (entry.uuid === uuid){
                        return key;
                    }
                }
            }else{
                if ( entrys["uuid"] === uuid){
                    return key;
                }
            }

        }
        return "";
    }


3赞

uuid在别的项目时,引用会变的。我现在用的一个粒子编辑器。官方的粒子在微信中奇卡无比。所以我自己做了一个。现在效果还是非常不错的,不过在更换图片时,需要手动去填写spriteframe的路径。我就想着,怎么把spriteframe拖动赋值后,在plist中来获取这图片的位置。
这样的话,就算plist换了一个工程,也会引用这个图片。不像uuid,后面你懂的了

谢谢。不过这个东西藏得有点深啊