1.制作一个本地文件,我们通过键值对的形式存取,所有文件的键必须是相同的键
例如:start=开始 start=start
quit=退出 quit=quit
2.创建一个本地化文件管理类LocalizationManager,用来加载某种语言的脚本
public class LocalizationManager
{
//我觉得是可以对这个管理器做一下扩展,达到更换按钮,那么所有文本文件都更换为那个语言
//第一:提供一个更换语言的方法,然后运行_load那个方法
//第二,将所有的文本文件都监听这一个按钮的选择方法,然后调用更换文字的方法.
private static LocalizationManager _instance;
public static LocalizationManager Instance
{
get
{
if (_instance == null)
{
_instance = new LocalizationManager();
}
return _instance;
}
}
private Dictionary<string, string> m_langDic;
private LocalizationManager()
{
m_langDic = new Dictionary<string, string>();
_LoadLocalizationManager();
}
public void _Init() { }
//各种语言的路径
private const string chinesePath = "Localization/Chinese";
private const string englishPath = "Localization/English";
public static string languagePath = chinesePath;
//根据语言的不同来加载不同的脚本
private void _LoadLocalizationManager()
{
//LocalizationManager.languagePath = languagePath;
m_langDic.Clear();
TextAsset ta = Resources.Load<TextAsset>(languagePath);
string[] lines = ta.text.Split('\n');
foreach (var item in lines)
{
if (string.IsNullOrEmpty(item) == false)
{
string[] keyvalues = item.Split('=');
foreach (var i2 in keyvalues)
{
Debug.Log(i2);
}
m_langDic.Add(keyvalues[0], keyvalues[1]);
}
}
}
//根据相同的Key得到不同的value
public string _GetTextValue(string key)
{
string value;
m_langDic.TryGetValue(key, out value);
return value;
}
}
3.制作一个通用的脚本读取文件,挂载在所有Text身上
public class LocalizationText : MonoBehaviour {
public string key;
void Start()
{
this.GetComponent<Text>().text = LocalizationManager.Instance._GetTextValue(key);
}
}