寫在前面
最近有一些時(shí)間了,想多跟進(jìn)一下博客。這個(gè)工具是談到海外游戲的時(shí)候想到需要這個(gè)工具。想著想著就寫了,寫的差不多的時(shí)候,順便查了一下,結(jié)果發(fā)現(xiàn)有好多這樣的工具,真是白造輪子了。

assets store
221個(gè)啊,還有很么多免費(fèi)的??吹竭@個(gè)就沒有太想寫了。
簡(jiǎn)單介紹一下
首先項(xiàng)目是基于我的另一個(gè)工具READ-EXCEL,一個(gè)很簡(jiǎn)單的轉(zhuǎn)表工具,這次寫這個(gè)工具,還有修改了幾個(gè)bug??。
基本功能:實(shí)時(shí)切換語言、Text組件自動(dòng)替換

基本原理:把每一個(gè)字符串設(shè)置一個(gè)key值,我們需要這個(gè)字符串的時(shí)候通過key來需要當(dāng)前語言這個(gè)key對(duì)于的字符串。換個(gè)說法就是把文字的key值和字符串用字典存起來,這就得到一個(gè)語言的所有字符串與key,然后再拿一個(gè)字典存語言key值與剛才得到的一個(gè)語言所有字符串的字典。
獲取文字有兩種方式:
1、直接獲?。?/p>
public string GetWordByDirect(int id)
{
switch (curLanguage)
{
case SystemLanguage.ChineseSimplified:
return Localization_ChineseSimplified.GetData(id).value;
case SystemLanguage.English:
return Localization_English.GetData(id).value;
case SystemLanguage.Japanese:
return Localization_Japanese.GetData(id).value;
default:
Debug.LogError("No This Language Data!");
return "";
}
}
優(yōu)勢(shì):速度快。劣勢(shì):每次需要重寫改這里,如果添加了語言。
2、反射獲得:
public string GetWordByReflection(int id)
{
if (!HasThisLanguageConfig(curLanguage))
{
return "";
}
var scriptName = "Localization_" + Enum.Parse(typeof(SystemLanguage), curLanguage.ToString()).ToString();
var method = Type.GetType(scriptName).GetMethod("GetData");
var word = method.Invoke(null, new object[] { id });
return word.GetType().GetField("value").GetValue(word).ToString();
}
優(yōu)勢(shì):添加語言不需要修改。劣勢(shì):速度慢。
差不多就這么多吧,沒啥難度的工具。具體的可以看看代碼。GIT。unity版本2017.3.1。