Unity编程笔记----多语言切换
来源:互联网 发布:知乎 风扇灯什么牌子好 编辑:程序博客网 时间:2024/05/17 08:51
一套项目完结之后,还项发布英文版 日文版怎么办? 有两种解决方案,第一种比较笨的方法是手动的把相应文字替换掉.
第二种就是把需要切换的语言集中存放到txt文档中,通过list集合,的方法进行访问(每一个key可以对应多个value). 下面实现的是第二种方法.
目标:实现 中文.英文.日文的切换.
1 界面UI的简单搭建:
2 txt文档的创建 格式为UTF-8
3 LanguageMgr的创建,挂载到Canvas上
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class LanguageMgr : MonoBehaviour{ private static LanguageMgr instance = null; public static LanguageMgr Instance { get { return instance; } } /// <summary> /// 语言 /// </summary> [SerializeField] private SystemLanguage language; /// <summary> /// 相同的key 对应 不同国家的value /// </summary> private Dictionary<string, string> dict = new Dictionary<string, string>();/// <summary> /// 加载预翻译的语言 /// </summary> private void loadLanguage() { //加载文件 TextAsset ta = Resources.Load<TextAsset>(language.ToString()); if (ta == null) { Debug.LogWarning("没有这个语言的翻译文件"); return; } //获取每一行 string[] lines = ta.text.Split('\n'); //获取key value for (int i = 0; i < lines.Length; i++) { //检测 if (string.IsNullOrEmpty(lines[i])) continue; //获取 key:kv[0] value kv[1] string[] kv = lines[i].Split(':'); //保存到字典 dict.Add(kv[0], kv[1]); Debug.Log(string.Format("key:{0}, value:{1}", kv[0], kv[1])); } } void Awake() { instance = this; loadLanguage(); } /// <summary> /// 获取对应的value /// </summary> /// <param name="key">键</param> /// <returns>返回对应的value 如果不存在这个key 就返回空串</returns> public string GetText(string key) { if (dict.ContainsKey(key)) return dict[key]; else//没有这个key { return string.Empty; } }}
4 UIText 在需要切换语言的text上挂载该脚本
using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEngine.UI;public class UIText : MonoBehaviour{ [SerializeField] private string key; // Use this for initialization void Start() { if (!string.IsNullOrEmpty(key)) { string value = LanguageMgr.Instance.GetText(key); if (!string.IsNullOrEmpty(value)) { gameObject.GetComponent<Text>().text = value; } } }}
5 点击 language 选择相应的语言.即可实现切换.
0 0
- Unity编程笔记----多语言切换
- unity 场景 切换 笔记
- Unity编程笔记
- unity编程笔记
- unity编程笔记
- unity编程笔记总结
- Unity笔记之-----简单的背包切换
- unity中多摄像机切换
- Unity编程笔记----音效管理器
- unity多语言功能
- 应用程序多语言切换
- iOS多语言切换
- php 多语言切换
- android多语言切换
- struts 多语言切换
- android多语言切换
- thinkphp多语言切换
- Android_App多语言切换
- Machine Learning第二讲[多变量线性回归] --(一)多变量线性回归
- 欢迎使用CSDN-markdown编辑器
- 八皇后问题
- 精通Python网络爬虫-书籍介绍
- 将十进制的各个位数分离出来
- Unity编程笔记----多语言切换
- 比特币区块结构解析
- MATLAB深度学习CNN包的代码详解补充及各变量参数说明
- C语言——指针的运算
- 系统延迟及定时
- ES6中 字符串中扩展 的方法
- dicom文件与bmp和jpg文件的相互转化
- Linux内核如何装载和启动一个可执行程序
- C语言作业|全排列(升序)