unity多语言功能

来源:互联网 发布:积分系统数据库设计 编辑:程序博客网 时间:2024/06/06 19:11


using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class LocalizationManager
{
    //单例模式 
    private static LocalizationManager _instance;

    public static LocalizationManager GetInstance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new LocalizationManager();
            }

            return _instance;
        }
    }                                           

    //选择自已需要的本地语言 
    public const string language = "Chinese";


    private Dictionary<string, string> dic = new Dictionary<string, string>();
    /// <summary> 
    /// 读取配置文件,将文件信息保存到字典里 
    /// </summary> 
    public LocalizationManager()
    {
        TextAsset ta = Resources.Load<TextAsset>(language);
        string text = ta.text;

        string[] lines = text.Split("\r\n".ToCharArray());
        foreach (string line in lines)
        {
            if (string.IsNullOrEmpty(line))
                continue;
            string[] keyAndValue = line.Split('=');
            Debug.Log("==" + keyAndValue[0] + "==" + keyAndValue[1] + "==");
            dic.Add(keyAndValue[0], keyAndValue[1]);
        }
    }

    /// <summary> 
    /// 获取value 
    /// </summary> 
    /// <param name="key"></param> 
    /// <returns></returns> 
    public string GetValue(string key)
    {
        if (dic.ContainsKey(key) == false)
        {
            return null;
        }
        string value = null;
        dic.TryGetValue(key, out value);

//从txt里读出来的"\n"变成了“\\n”了,所以要重新替换一下
        return value.Replace("\\n", "\n");
    }
}


再Assest目录下的Resources文件夹里建一个Chinese.txt文件里面的内容格式如下

KEY.110001=测试1
KEY.110002=测试2