多语言图片问题

一张需要多语言的图片,如果按常规将所有国家语言图片全部拖到组件中,会全部加载进来,导致内存过高,能什么好办法可以只加载当前语言对应的那一张图片资源。
可否我自己挂载一个自定义脚本,在某个契机修改加载的图片资源。

你把相同语言的图片放到同一文件下,起名例如zn/en然后加载前获取一下当前语言然后加载对应文件下的图片不行吗?

直接根据语言配置动态加载,语言文件中需要配置对应的地址。

一般是在.fire.prefab中使用,希望能在看到场景或预制体时已经加载好了,而不是后面才加载进来,闪烁效果不好。

你可以加个过渡动画啊,等全部加载完毕了再显示内容啊,不然你就只能一次性加载所有了

对的,一般都是过渡中加载好的

这个功能可能用到任何地方,比如UI,某个窗口,某个场景,使用过度动画不太科学。
想过自己包一个函数,等加载完.prefab后,在去查询有没的自己的多语言图片脚本,去额外加载当前语言图片。但有个几个问题,.fire如何处理。在工程里一般会需要显示效果,默认看的是简体中中文的图片,那么加载时,一定会加载了这张简体中文。当游戏是其他语言时,又去加载了其他语言资源。内存里还是有不需要的简体中文资源。

那你用个笨办法,你还按照之前的把所有图片挂上去,等到打开了界面后,你根据当前的语言把非当前语言的其他资源都释放掉 :joy:

:grin:是个好的笨办法,还是希望官方有个最优解。
如果我有10国语言,加载了不需要的其他9国语言图片,加载变慢了,瞬间内存上限会被抬高。

所以一般还是动态加载啊,不清楚你是原生还是网页,网页的确会慢,但是网页本身所有资源就是要再次获取的,所以慢点也算合理,而原生的话,加载本地资源是很快的,基本你不太能感受到闪烁

看cc源代码里,加载里都是使用了setTimeout的,肯定会闪烁。
如果官方能提供一个像cc.assetManager.parser.register之类的东西,让我在加载.fire,.prefab时,我自己有机会去修改加载的图片资源是最好的。

我有一个疑问啊,当你去加载一个.fire的时候,比如这个.fire很大你就一直在这里等着吗?没个过渡啥的吗?

我一般预加载了。

有一个烂办法,维护一个全局的表,这个表以默认的图片名称位key,替换目标位value,然后在引擎的preprocess.js中,先查传入的task里相关属性的图名名称或uuid是否在这个全局表中,如果存在就直接替换了(path和uuid都替换)。 全局表在游戏最开始的时候动态根据语言创建的。把所有需要替换的都放在这里面维护。

这样就可以在真正加载之前就把名字替换了。

是个办法,还需要写个工具支持。还是希望官方提供个简单点的。

大佬,我现在在做多语言,有点弄不明白文档里说的i18n这个东西,我也没找到文档里说的面板,不知道怎么做

做UUID映射