zoukankan      html  css  js  c++  java
  • Unity3D实现多语言切换

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

    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方法来进行语言切换。

  • 相关阅读:
    CAN总线学习资料
    VMware虚拟机 硬盘空间不足 磁盘大小调整方案
    郭天祥-S3C2440开发板Linux2.6.31移植教程
    MFC串口编程——使用标准SerialCom类
    Luogu P2602 [ZJOI2010]数字计数 //数位DP
    luogu P1896 [SCOI2005] 互不侵犯 //状压DP
    中北大学ACM 5/12 T6 CSY的幸福
    P2473 || SCOI2008 奖励关 //状压&&期望DP
    请让蝴蝶爬满全身
    【图论】二分图 // 未完成 =、=
  • 原文地址:https://www.cnblogs.com/Mr147/p/9876185.html
Copyright © 2011-2022 走看看