请教下引擎组大佬 Creator3.4.1中二进制文件加载以及图片加密方案如何实现?

在2.x的时代,可以使用
var url = cc.url.raw(“resource/xxx.bin”);
然后再使用 XMLHttpRequest 可以读取本地文件

现在到了3.x了, cc.url.raw被无情弃用了

请问现在有什么办法可以实现2.x时的文件读取?

resources.load(“module”, (err, data: any) => {});
可以这种方式加载,如果你的是.bin的二进制,你会发现data的数据类型是BufferAsset

使用 resources.load(“module”, (err, data: any) => {});,并且文件的扩展名必须为".bin", 完成回调中的data则是BufferAsset, data._buffer 就是unit8Array数据.

关键就是 引擎组为什么一定限定扩展名为 .bin? 难道.png就一定是图片文件
我感觉 文件就是一个容器 往里放什么东西是使用者决定的。

引擎的接口,可以提供高层接口,加载引擎支持的资源类型,比如prefab,texture,spriteframe,model等
但是也要提供直接读取文件内容的接口,内容读取后怎么使用是开发者的事情。

比如开发过程中 图片是没有加密的 此时不论是项目中资源引用,还是游戏数据配置 图片的路径都是 xxx/xxx/xxx.png 游戏发布时,对图片做了加密,其实我也是希望不更改原路径的,游戏运行时则是读取文件内容,解密然后生成图片,如果发现不是加密文件,则直接生成图片。

现在引擎限定了扩展名 导致这一块的工作变得很是麻烦。

我翻了下文档,说是可以注册自定义的解析器,我欣喜万分地在项目的resources目录下放一个 处理过的处理过的 x.png文件,我心心恋恋的Creator编辑器立马报怨说:


我心想编辑器报怨下,我可以认,毕竟人家不容易。

我写了加载代码,运行,打开console一看:
QQ图片20220311113920
哦靠,这是不给活路的节奏呀!


可以参考 gif 加载的看看,里面就是自定义的解析器。

谢谢回复,我看了那个gif加载相关的代码,获益非浅!

可是 Creator编辑器对于随便一个*.gif文件 是可以正常加载不报错的。
但是对于*.png 就没有那么幸运了。

现在游戏中图片,大多都是png或者jpg的

那个gif加载示例对于游戏项目中自定义格式文件的加载是可以借签的。对于Creator内置支持的资源类型,比如png,jpg,json等,目前来看,是没有办法的

可以重写解析部分的代码

现在问题的关键就是 creator根本就不认 非图片内容的 *.png文件 没有办法加载进来

换个方式?开发阶段可以不加密图片,打包之后跑脚本加密

现在只能这样处理 发布项目之后再处理加密相关