tuyoogame / YooAsset

unity3d resources management system
https://www.yooasset.com/
Apache License 2.0
2.38k stars 467 forks source link

Address能否提供一个文件名加后缀名称的选项? #144

Open fanhaining opened 1 year ago

fanhaining commented 1 year ago

image 项目重度使用spine,spine生成的同名文件我改不了,如果用path的话实在太长了,如果有包含后缀名的选项那就太棒了

gmhevinci commented 1 year ago

推荐你写一个过滤器,把非prefab过滤掉。

fanhaining commented 1 year ago

资源是需要打包进去的,只是加载的时候只需要加载一个,其他同名文件spine会自己处理

gmhevinci commented 1 year ago

打包会自动处理关联资源。MainCollector只收集代码加载的资源。

fanhaining commented 1 year ago

现在问题是用全路径太长,用文件名访问会同名这个问题,同名的文件都是资源文件 image

gmhevinci commented 1 year ago

明白。推荐你扩展一个可寻址命名规则

    [DisplayName("定位地址: 文件名+后缀")]
    public class AddressByFileNameWithExt : IAddressRule
    {
        string IAddressRule.GetAssetAddress(AddressRuleData data)
        {
            return Path.GetFileName(data.AssetPath);
        }
    }
fanhaining commented 1 year ago

刚刚试了下,可以选择但是构建会报构建错误,没有具体报错信息

gmhevinci commented 1 year ago

警告信息也留意一下。

fanhaining commented 1 year ago

抱歉,项目里的一个错误没注意到,构建打包实测没问题了。这个issue就关了

fanhaining commented 1 year ago

image 抱歉重新打开了,添加了这个规则之后,这里会报一个错误,不知道怎么修改

fanhaining commented 1 year ago

1.5.4-preview版本DeserializeManifestOperation类的149行

gmhevinci commented 1 year ago

这只是一个警告,如果某个资源被警告了。那么加载的时候提供全路径+后缀名 就没事了

fanhaining commented 1 year ago

我现在是基于这个规则的, 这个规则本身我不想改动 [DisplayName("定位地址: 文件名+后缀")] public class AddressByFileNameWithExt : IAddressRule { string IAddressRule.GetAssetAddress(AddressRuleData data) { return Path.GetFileName(data.AssetPath); } }