(本文未经许可禁止转载)

           

背景

我所使用的Unity在Windows的PC端上进行开发,而Build目标是IOS端。前段时间我在我自己的家里建立了局域网文件管理流水线,来自动化Unity->XCode->Apple Store Connect的过程。

而有一天,我想让我的游戏支持多门语言。引入本地化(Localization)资产。
但发生了不少错误。
经过漫长的学习后,做此笔记来帮助后人排忧。

游戏相关:我的游戏支持 英文,中文,日文,韩文

主要有以下两类问题:

第一种问题:Localization组件在IOS端运行时抛出异常

这大概率是因为Localization的依赖:Addressables的代码被过度优化(Stripped)导致函数缺失了。

在游戏Asset文件夹下加入link.xml来阻止Unity对Addressables进行优化,link.xml文件内容:

< linker >
    < assembly preserve="all" fullname="Unity.Addressables"/>
    < assembly preserve="all" fullname="Unity.ResourceManager"/>
< /linker >

第二种问题:Localization在初始化时抛出null(无Locale设定)

这说明第一个问题解决了。Localization可以正常工作了。
但Localization去访问本地资源的时候没找到Locale文件。

这是因为Localization的所有资源都是用Addressables来管理的,而你没有去设置Addressables。方法如下:

Window -> Asset Management -> Addressables -> Groups -> Build -> New Build -> Default Build Script

总结

Localization能有什么坏心思呢,出问题就先思考是不是Addressables哪里不对了。

       

(本文未经许可禁止转载)

   

发表回复