【Unity】Localization踩坑笔记
(本文未经许可禁止转载)
背景
我所使用的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哪里不对了。