Unity编程笔记----多语言切换
一套项目完结之后,还项发布英文版 日文版怎么办? 有两种解决方案,第一种比较笨的方法是手动的把相应文字替换掉.
第二种就是把需要切换的语言集中存放到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 valuefor (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 initializationvoid Start(){if (!string.IsNullOrEmpty(key)){string value = LanguageMgr.Instance.GetText(key);if (!string.IsNullOrEmpty(value)){gameObject.GetComponent<Text>().text = value;}}}
}
5 点击 language 选择相应的语言.即可实现切换.
Unity编程笔记----多语言切换相关推荐
- Unity编程笔记----音效管理器
游戏世界里离不开各种酷炫的音效,把这些音效集中起来进行管理是每个项目必须要做的事情. 分享一下自用的SoundMgr(适用于大多Unity项目) 整体思路: SoundMgr脚本被调用时,自动执行继承 ...
- Go语言编程笔记16:存储数据
Go语言编程笔记16:存储数据 图源:wallpapercave.com 几乎任何程序都绕不开读写数据,只不过具体的数据存储介质和方式有所不同.本篇文章将从多种数据存储方式进行探讨各种存储方式如何实现 ...
- 贪吃蛇统计分数的c语言代码,C/C++编程笔记:C语言贪吃蛇源代码控制台(二),分数和食物!...
接上文<C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!>如果你在学习C语言开发贪吃蛇的话,零基础建议从上一篇开始哦!接下来正式开始吧! 三.蛇的运动 上次我已经教大家画 ...
- 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...
版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...
- 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码
[Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...
- 《Unity 3D脚本编程:使用C#语言开发跨平台游戏》序言
本文是7月受陈嘉栋的委托为他的新书<Unity 3D脚本编程:使用C#语言开发跨平台游戏>所写的序言,借助序言告诉大家.NET平台有着一个广阔的使用场景. 序言 Unity3D 是由两个具 ...
- c语言球球半径,C/C++编程笔记:C语言开发球球大作战(源码分享),你想试试吗?...
原标题:C/C++编程笔记:C语言开发球球大作战(源码分享),你想试试吗? 游戏背景 <球球大作战>是Superpop一款自主研du发的免费手机网络游戏. 以玩家间的实时互动PK产生游戏乐 ...
- Go语言编程笔记18:软件测试
Go语言编程笔记18:软件测试 图源:wallpapercave.com 软件测试也是软件开发的重要组成部分,本篇文章将探讨如何使用Go的标准库和第三方库对程序进行测试. testing Go的标准库 ...
- 15.笔记go语言——Web编程概念
15.笔记go语言--Web编程概念 Go目前已经拥有了成熟的Http处理包,这使得编写能做任何事情的动态Web程序易如反掌. Web原理 浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去 ...
最新文章
- python教程第四版pdf下载-笨办法学python第四版 电子书(pdf格式)
- $.fn.extend简单学习
- mysql utf8mb4 配置_MariaDB(Mysql)配置utf8mb4编码
- [css] 写出主流浏览器内核私有属性的css前缀
- java线程自带队列的使用以及线程阻塞
- RocketMq 消费消息的两种方式 pull 和 push
- PowerBI 应用时间智能(生成日期表)
- 强名称(3)强名称的脆弱性
- win10 安装程序显示“为了对电脑进行保护,已经阻止此应用” 管理员已阻止你运行此应用
- cocos2dx游戏-可爱的小精灵的各种用法大全
- C#图片处理:生成大尺寸图片,以边框颜色填充
- new和delete,malloc和free
- matlab滤波有几种形式,几种经典常用的滤波算法
- 图像数据的标准化与归一化
- c语言输入输出预处理命令,C语言第十一讲,预处理命令.
- 大话设计模式——外观模式
- 使用无界面方式登录人人网
- 常用的CSS命名规范大总结
- 将Eclipse4.0修改为传统的界面
- 程序员投简历到底是“精投”好,还是“广撒网”好?
热门文章
- 2022保安员(初级)考试试题模拟考试平台操作
- JAVA编程你必须知道的那些英文单词
- 【94期分享】4款水彩手绘风格PPT模板免费下载
- html5首行缩进没有效果,css如何实现首行缩进效果
- 写代码时记录的小技巧
- Spring优点、Spring IOC 底层实现原理、Spring IOC 快速入门案例、何为 DI 依赖注入
- Java——后端开发经验总结(持续更新中)
- python综合应用题苏格拉底_计算机辅助python的综合应用(3),二级,应用题,三
- WAIC 2022 | 洞见科技在可信AI论坛联合发布《可信人工智能产业生态发展报告》
- 虎年姓氏头像微信小程序源码+AI智能配音小程序源码+喝酒娱乐多功能小程序源码