问个关于同名资源加载的问题

加载资源的url是不带后缀的,如果一个目录下有同名但是不同类型的资源加载就可能出现混乱。当然解决办法是放不同的目录,或者加载的时候加上资源类型?

其实重名的场景还是挺常见的,比如一个模型包含fbx,贴图材质,是很有可能都同名的,又比如spine的3个资源文件也都是同名的,有时候会出现一些资源丢失的问题,查了半天发现是重名造成的,也没有警告之类的提示

想问问什么要这么设计,直接带上后缀有什么劣势吗?

我记得可以在第二个参数指定后缀,如{ext: “png”}

这涉及美术那边了,重复的后缀改成阿拉伯数字递增即可

展开说说?

最近遇到的问题是:比如一个文件夹内有一张图test.png,一个材质test.mat,有另一个资源m,依赖这个test.png,(这个依赖是业务层的,不是creator自身的依赖),在加载M的时候,会自动去加载test.png,加载的过程都是一切顺利,结果加载完成之后test.png这张图没有正常显示(加载的方法并没有严格的类型判定,只有普通的非空判定,一定程度上导致问题没有在第一时间暴露)。而且这个结果好像是不稳定的,就是加载出来并不总是图或者是材质,因为这个问题已经存在一段时间了,只是最近才出现暴露出来。

之前断断续续也遇到过这种问题,有一些因为能直接断点看出资源类型不对就直接处理了,有一些可能逻辑比较深,不能直接发现问题,所以才有这个疑问

从使用上来说,因为当有同名的时候就会出现困惑:加载出来的是什么,然后需要去查api才发现可以指定类型。

所以想问问这么设计的初衷,既然参数有资源类型和包括扩展名,那不如直接加上后缀,省去理解成本也简化接口。

加载的时候可以指定类型: https://docs.cocos.com/creator/manual/zh/asset/dynamic-load-resources.html
设计出发点可参考: Creator 资源加载对文件扩展名限定的疑惑!!!