项目现在需要做多语言切换部分,下面是一个基本多语言切换实现

1.

首先建立一个类来存放字符,其中包括一个静态方法来根据Key和语言类型获取对应字符

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public static class multiLangConst { static Dictionary<string, string> LangMap_en = new Dictionary<string, string>{
{"txt_name", "Name"},
}; static Dictionary<string, string> LangMap_cn = new Dictionary<string, string>{
{"txt_name", "名字"},
}; public static string GetValue(string languageType, string key) {
if (languageType == "en") {
return LangMap_en[key];
} else if (languageType == "cn") {
return LangMap_cn[key];
}
return "N/A";
}
}

2.

然后建立一个全局的委托

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System; public class GameManager : MonoBehaviour { public delegate void OnLanguageChanged(string type);
public static OnLanguageChanged onLanguageChanged = null;
public void SetupLanguage(string type) {
if (onLanguageChanged != null) {
onLanguageChanged(type);
}
}
}

3.

最后是一个Handler,挂在有Text组件的对象上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class multiLangHandler : MonoBehaviour { [SerializeField, Header("Langkey")]
private string LangKey = ""; void Awake() {
GameManager.onLanguageChanged += onLanguageChanged;
} private void OnDestroy() {
GameManager.onLanguageChanged -= onLanguageChanged;
} void onLanguageChanged(string languageType) {
Text text = this.gameObject.GetComponent<Text>();
if (text != null) {
var value = multiLangConst.GetValue(languageType, LangKey);
text.text = value;
return;
}
}
}

最后通过按钮来调用GameManager下面的SetupLanguage方法来进行语言切换。

Unity3D实现多语言切换的更多相关文章

  1. DataGrid 列头实现国际化语言切换

    <DataGrid> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" Width= ...

  2. Android app应用多语言切换功能实现

    最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成, ...

  3. ABP的语言切换

    在ABP官网http://www.aspnetboilerplate.com/创建一个Multi Page Web Application项目并打开,在Web项目下可以找到一个Controllers/ ...

  4. iOS 语言切换、本地化,国际化

    什么是本地化处理? 本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程序的语言要进行本地化处理一下. 本地化处理需要处理那些文件? ( ...

  5. 【转】Android 语言切换过程分析

    最近在看一个bug,系统切换语言后,本来退到后台的音乐,会在通知栏上显示通知.为了解决这个bug,我学习了下android的语言切换流程,也参考了大量其他人的资料.(主要参考了http://blog. ...

  6. android 语言切换过程分析

    android 语言切换过程分析 2014-02-27 18:13 1207人阅读 评论(0) 收藏 举报 语言切换android语言切换android改变语言 最近在看一个bug,系统切换语言后,本 ...

  7. QT实现多语言切换

    功能需求: 网盘客户端要能够实现多国语言的切换,第一版要支持中.英文的切换.在实现过程中感觉QT对多国语言的支持还是很不错的,制作多语言包很方便,切换的逻辑也很简单.下面就来看一下QT中如何制作多语言 ...

  8. Android 应用内多语言切换

    最近公司的 App 里需要用到多语言切换,简单来说,就是如果用户没有选择语言选项时,App 默认跟随系统语言,如果用户在 App 内进行了语言设置,那么就使用用户设置的语言.当然,你会发现,App 的 ...

  9. bootstrap table 插件多语言切换

    在bootstrap中的bootstrap table 插件在多语言切换的审核,只需要如下操作 引入bootstrap-table-locale-all.js文件 $('#Grid').bootstr ...

随机推荐

  1. day 09初始函数

    # with open('小护士班主任',encoding='utf-8') as f,open ('小护士班主任.bak','w',encoding='utf-8')as f2: # for lin ...

  2. FtpWebRequest.UsePassive属性:设置FTP工作模式

    默认值:true,被动模式 PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路. 当需要传送数据时, 服务器在命令链路上用PASV ...

  3. socket应用(vue、node.js、M站)

    socket应用(vue.node.js.M站) 前言:我们在做一些项目的时候需要做到实时变化, 比如我们有时候有需求会要求我们做一个类似于聊天室的页面 比如有些时候我们对某些东西进行点赞和刷票,需要 ...

  4. vue中computed、metfods、watch的区别

    一.computed和methods 我们可以将同一函数定义为一个 method 或者一个计算属性.对于最终的结果,两种方式确实是相同的. 不同的是computed计算属性是基于它们的依赖进行缓存的. ...

  5. [NOIP2014D2]

    T1 Problem 洛谷 Solution 枚举那个点的位置,再O(n)扫一遍求出覆盖的公共场合的数量... 所以时间复杂度为O(128 * 128 * n) Code #include<cm ...

  6. 蒙层嵌套pdf以及连接后台

    一.在本地浏览pdf(直接将element-dialog 和 iframe相结合)需要将要浏览的pdf放入static文件夹下面 <el-button type="text" ...

  7. JS获取伪元素的属性

    window下的getComputedStyle属性.getPropertyValue属性 // 获取 .element:before 的 color 值 var color = window.get ...

  8. 关于FGPA的复位

    关于FGPA的复位 当初开始学FPGA的时候,总是疑惑:FPGA不是没有复位管教么,但总在always看到有复位信号.这个复位信号(我们暂且称为rst_n)从哪里来? 实际上是可以从两个方面获得的,这 ...

  9. 白鹭wing的自动编译

    1.lunch.json文件中的"preLaunchTask":"build",注释掉. 2.安装node-v6.11.2-x64.msi 3.安装tsc 命令 ...

  10. react Hooks

    useEffect 1.useEffect是didMount和didUpdate和willUnmount三个函数的集合 2.useEffec(fun):fun会在每次组件render之后执行,而fun ...