当前位置: 首页 > news >正文

Unity之Text组件换行\n没有实现+动态中英互换

前因:文本中的换行 \n没有换行而是打印出来了,解决方式

因为unity会默认把\n替换成\\n

面板中使用富文本这个选项啊 没有用

m_text.text = m_text.text.Replace("\\n", "\n");

###动态中英文互译

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Video;
using System;
using static EasyLanguage;public class UIManage : MonoBehaviour//, IPointerDownHandler, IPointerUpHandler
{public VideoPlayer[] videoPlay;//实例private EasyLanguage m_language;//中英按钮public Button chinese_btn;public Button sound_btn;private AudioSource audios;private bool sound;private bool chinese=true;//中文private void Awake(){m_language = EasyLanguage.GetInstance();}void Start() {audios = GetComponent<AudioSource>();chinese_btn.onClick.AddListener(ChineseChanged);ChineseChanged();}/// <summary>/// 中英互译/// </summary>private void ChineseChanged(){if (chinese){chinese_btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("UI/cn");m_language.Changedlanguage(EasyLanguage.LanguageList.cn);Debug.Log("Chinese");chinese = false;}else{chinese_btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("UI/en");m_language.Changedlanguage(EasyLanguage.LanguageList.en);Debug.Log("English");chinese = true;}}/// <summary>/// 音频播放/// </summary>private void Sound(){if(sound){sound_btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("UI/on");audios.volume = 1;sound = false;}else{sound_btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("UI/off");audios.volume = 0;sound = true;}}private void CloseVideo()//关闭视频{for (int i = 0; i < videoPlay.Length; i++){videoPlay[i].gameObject.SetActive(false);}}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class EasyLanguageText : MonoBehaviour
{public string m_key;private Text m_text;// Start is called before the first frame updatevoid Start(){m_text = transform.GetChild(0).GetComponent<Text>();//调用静态函数   注册事件EasyLanguage.GetInstance().ReginsterELT(this);//加载中...OnLanguageChanged();}// Update is called once per framevoid Update(){}/// <summary>///unity文本组件没有实现换行的效果///  因为unity会默认把\n替换成\\n/// m_text.text = m_text.text.Replace("\\n", "\n");/// </summary>public void OnLanguageChanged(){m_text.text = EasyLanguage.GetInstance().GetTextByKey(m_key);m_text.text = m_text.text.Replace("\\n", "\n");}
}
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
/// <summary>
/// 中英互译
/// key  --> value
/// 储存
/// </summary>
public class EasyLanguage
{#region 单例//静态函数private static EasyLanguage m_instance;//实例public static EasyLanguage GetInstance(){if (m_instance == null){m_instance = new EasyLanguage();}return m_instance;}#endregion//键值储存  key=str   value=123private Dictionary<string, string> m_dic_elt;//集合private List<EasyLanguageText> m_list_elt;//构造函数EasyLanguage(){//初始化容器m_dic_elt = new Dictionary<string, string>();m_list_elt = new List<EasyLanguageText>();//当前语言m_currentLanguage = LanguageList.cn;//更新语言loadLanguage();OnLanguageChanged();}//事件:注册public void ReginsterELT(EasyLanguageText elt){m_list_elt.Add(elt);}//事件:销毁public void UnReginsterELT(EasyLanguageText elt){m_list_elt.Remove(elt);}//枚举 语言类型public enum LanguageList{en,//英文cn//中文}//当前语言类型private LanguageList m_currentLanguage;//获取当前语言public void Changedlanguage(LanguageList ll){//当前值改成传入的Debug.Log(m_currentLanguage+"-->"+ll);if (m_currentLanguage == ll) return;m_currentLanguage = ll;m_dic_elt.Clear();loadLanguage();OnLanguageChanged();}/// <summary>/// 语言切换/// </summary>public void OnLanguageChanged(){//if (m_currentLanguage == LanguageList.cn)//{//    m_dic_elt.Add("h3", "yuan庄");//    m_dic_elt.Add("h4", "lu庄");//}//else//{//    m_dic_elt.Add("h3", "yuanzhuang");//    m_dic_elt.Add("h4", "luzhuang");//}Debug.Log("OnLanguageChanged" );foreach (var elt in m_list_elt){elt.OnLanguageChanged(); }}/// <summary>/// 读取key/// </summary>/// <param name="key"></param>/// <returns></returns>public string GetTextByKey(string key){return m_dic_elt[key];}/// <summary>///加载语言/// </summary>public void loadLanguage(){switch (m_currentLanguage){case LanguageList.en://英文StreamIOText("en");break;case LanguageList.cn://中文StreamIOText("cn");break;default:break;}}public void StreamIOText(string chinese){TextAsset asset = Resources.Load(chinese) as TextAsset;//流取出字节Stream st = new MemoryStream(asset.bytes);//逐行读取StreamReader sr = new StreamReader(st);//每行都打印   只要不是最后一行while (!sr.EndOfStream){string line = sr.ReadLine();Debug.Log(line);string[] tempStrings = line.Split('=');m_dic_elt[tempStrings[0]] = tempStrings[1];}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AIGC时代创意设计师从“创作”向“智作”升级
  • 深入解析 HTTP Headers 中的 baggage 参数
  • 【前端】包管理器:npm、Yarn 和 pnpm 的全面比较
  • pytorch实现水果2分类(蓝莓,苹果)
  • FastApi+WebSocket 解析
  • 【数据结构】双向链表
  • DDR3 (四)
  • WPF引入多个控件库使用
  • 机器学习——LR、‌GBDT、‌SVM、‌CNN、‌DNN、‌RNN、‌Word2Vec等模型的原理和应用
  • Kodcloud可道云安装与一键发布上线实现远程访问详细教程
  • Linux操作系统CentOS如何更换yum镜像源
  • 【智能制造-14】机器视觉软件
  • 2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片
  • python杨辉三角的两种书写方式
  • LLM代理应用实战:构建Plotly数据可视化代理
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【comparator, comparable】小总结
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • es的写入过程
  • Go 语言编译器的 //go: 详解
  • java中的hashCode
  • underscore源码剖析之整体架构
  • Vue.js源码(2):初探List Rendering
  • 二维平面内的碰撞检测【一】
  • 观察者模式实现非直接耦合
  • 缓存与缓冲
  • 日剧·日综资源集合(建议收藏)
  • 三分钟教你同步 Visual Studio Code 设置
  • 一文看透浏览器架构
  • FaaS 的简单实践
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​queue --- 一个同步的队列类​
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​字​节​一​面​
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • %@ page import=%的用法
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (11)MATLAB PCA+SVM 人脸识别
  • (a /b)*c的值
  • (安卓)跳转应用市场APP详情页的方式
  • (二) 初入MySQL 【数据库管理】
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (三)mysql_MYSQL(三)
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .htaccess配置常用技巧
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .net的socket示例
  • @Autowired和@Resource装配
  • @Resource和@Autowired的区别
  • [C#]C# winform部署yolov8目标检测的openvino模型
  • [c]扫雷
  • [C++]C++类基本语法