问题及难点
相信做海外游戏代理的同学一定会遇到需要做本地化的问题,其中资源可以通过替换合图来处理。而文本是其中一个比较难处理的问题。其中主要难点在于UGUI本身没有提供相应的插件,而对于一开始没规划的项目来说,你需要去找出其中所有的外语文本,找到后再将对应Text
控件替换成你自定义的控件,替换后再需要填入对应的Key值。这对于策划来说简直是恶梦~
工具的基本原理
LocalizationText控件
UGUI中的Text
控件只提供了text属性接口供你进行对文本的设置,那么要实现本地化有下面两种做法:
- 1.在
Text
控件初始化后使用代码将其text
属性修改,这样的话,我们需要在所有的有Text
控件的地方添加相应的修改代码,这显然是不符合可持续发展的。 - 2.自定义新的
Text
控件,在编辑器阶段完成对Key值的设置。这种方案需要我们继承Text
控件,并修改其输入接口,从修改text
改为修改Key
,通过Key来得到相应语言的文本。
综上,我们采取第二种方案来实现我们的LocalizationText
控件,通过对Key的设置得到文本,如图:
有了LocaliztionText
我们只需要输入Key**Help**而不需要直接填写帮助二字,通过为不同语言建立映射表我们就可得到对应语言的Help的文本。
相关代码实现
这里我主要是先去看了UGUI源码,根据其中Text的实现做了修改。
using System;
using UnityEngine.UI;
using UnityEngine;
namespace Localization
{
public class LocalizationText : Text
{
#region Param
[Header("Localization")]
[SerializeField]