当前位置:   article > 正文

Unity3D实现多语言本地化_unity c#获取本地语言

unity c#获取本地语言

一款游戏可能有多个语言版本,各个版本的语言不相同,有中文的、英文的等多种版本

在开发时,我们一般将关键字翻译到一个文本文件

当需要对游戏的关键字翻译后,只需要对文件进行解析做相关处理

接下来我做一个简单Demo,介绍创建一个简单语言本地化项目

先在Scene视图下创建两个按钮,如下图

 

在Project视图下新建一个Resources文件夹

在Resources文件夹下新建两个名为Chinese和English的.txt文件

文本文件等号左边是同一的标识,相当于一个“key”

中文问题如果现实不了,可能是编码问题,这里我将该文本编码设置成UTF-8

Chinese.txt

start=开始  
pause=暂停  


English.txt

 

 

 

start=Start  
pause=Pause  


接下来新建一个命名为LocalizationManager的C#脚本,用于对本地化进行管理

 

 

 

 

LocalizationManager.cs

 

  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. public class LocalizationManager
  5. {
  6. //单例模式
  7. private static LocalizationManager _instance;
  8. public static LocalizationManager GetInstance
  9. {
  10. get
  11. {
  12. if (_instance == null)
  13. {
  14. _instance = new LocalizationManager();
  15. }
  16. return _instance;
  17. }
  18. }
  19. private const string chinese = "Chinese";
  20. private const string english = "English";
  21. //选择自已需要的本地语言
  22. public const string language = english;
  23. private Dictionary<string, string> dic = new Dictionary<string, string>();
  24. /// <summary>
  25. /// 读取配置文件,将文件信息保存到字典里
  26. /// </summary>
  27. public LocalizationManager()
  28. {
  29. TextAsset ta = Resources.Load<TextAsset>(language);
  30. string text = ta.text;
  31. string[] lines = text.Split('\n');
  32. foreach (string line in lines)
  33. {
  34. if (line == null)
  35. {
  36. continue;
  37. }
  38. string[] keyAndValue = line.Split('=');
  39. dic.Add(keyAndValue[0], keyAndValue[1]);
  40. }
  41. }
  42. /// <summary>
  43. /// 获取value
  44. /// </summary>
  45. /// <param name="key"></param>
  46. /// <returns></returns>
  47. public string GetValue(string key)
  48. {
  49. if (dic.ContainsKey(key) == false)
  50. {
  51. return null;
  52. }
  53. string value = null;
  54. dic.TryGetValue(key, out value);
  55. return value;
  56. }
  57. }

 

 

 

接下来新建一个命名为LocalizationText的C#脚本,用与挂载到含有Text组件的对象上

LocalizationText.cs

  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;
  4. public class LocalizationText : MonoBehaviour
  5. {
  6. public string key = " ";
  7. void Start()
  8. {
  9. GetComponent<Text>().text = LocalizationManager.GetInstance.GetValue(key);
  10. }
  11. }


最后,将LocalizationText挂载到含Text组件的游戏对象上

 

并将输入key,通过key来获取需要显示的字符串


运行游戏,成功将中文转化为英文

 

 

 

 

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号