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];}}
}
相关文章:

Unity之Text组件换行\n没有实现+动态中英互换
前因:文本中的换行 \n没有换行而是打印出来了,解决方式 因为unity会默认把\n替换成\\n 面板中使用富文本这个选项啊 没有用 m_text.text m_text.text.Replace("\\n", "\n"); ###动态中英文互译 using System.Collections; using…...

vue3+ el-tree 展开和折叠,默认展开第一项
默认第一项展开: 展开所有项: 折叠所有项: <template><el-treestyle"max-width: 600px":data"treeData"node-key"id":default-expanded-keys"defaultExpandedKey":props"defaultProps"…...

ProFormList --复杂数据联动ProFormDependency
需求: (1)数据联动:测试数据1、2互相依赖,测试数据1<测试数据2,测试数据2>测试数据1。 (2)点击添加按钮,添加一行。 (3)自定义操作按钮。 ࿰…...
Git、Github、tortoiseGit下载安装调试全套教程
一、Git 1.下载安装Git 编辑器可默认Vim,可换成别的,此处换成VScode,换成VScode或别的都需要单独下载和调用 (1)Git安装:https://www.cnblogs.com/xiuxingzhe/p/9300905.html 超级完整的 Git的下载、安…...

老师怎么快速发布成绩?
期末考试的钟声刚刚敲响,成绩单的发放却成了老师们的一大难题。每当期末成绩揭晓,老师们便要开始一项繁琐的任务——将每一份成绩单逐一私信给家长。这不仅耗费了大量的时间和精力,也让本就忙碌的期末工作变得更加繁重。然而,随着…...

央视揭露:上百元的AI填报高考志愿真的靠谱吗?阿里云新增两位AI圈“代言人”!|AI日报
文章推荐 MiniMax闫俊杰:国内模型远不及GPT-4;OpenAI隐瞒黑客曾入侵其内部系统|AI日报 今日热点 月之暗面、智联招聘成为阿里云新“代言人”,使用阿里云强大算力和大模型服务平台提升模型推理效率 7月8日,阿里云官…...

TPM管理咨询公司甄选指南
在竞争激烈的市场环境中,TPM(全面生产维护)管理咨询公司的重要性日益凸显。然而,如何在众多咨询公司中筛选出最适合自己企业的合作伙伴,成为了许多企业决策者面临的难题。本文将从专业度、行业经验、服务质量和性价比等…...
探索 Scikit-Learn:机器学习的强大工具库
Scikit-Learn 探索 Scikit-Learn:机器学习的强大工具库主要功能模块分类(Classification)回归(Regression)聚类(Clustering)降维(Dimensionality Reduction)模型选择&…...

音视频质量评判标准
一、实时通信延时指标 通过图中表格可以看到,如果端到端延迟在200ms以内,说明整个通话是优质的,通话效果就像大家在同一个房间里聊天一样;300ms以内,大多数人很满意,400ms以内,有小部分人可以感…...

如何在vue3中使用scss
一 要使用scss首先需要下载相关的包 可以在终端使用下面的命令下载相关包 npm install -D sass 二 在src文件下新建一个文件夹叫做styles 在文件夹下创建三个文件 index.scss主要用来引用其他文件 reset.scss用来清除默认的样式 variable.scss用来配置全局属性 三 需要在v…...

Gartner发布采用美国防部模型实施零信任的方法指南:七大支柱落地方法
零信任是网络安全计划的关键要素,但制定策略可能会很困难。安全和风险管理领导者应使用美国国防部模型的七大支柱以及 Gartner 研究来设计零信任策略。 战略规划假设 到 2026 年,10% 的大型企业将拥有全面、成熟且可衡量的零信任计划,而 202…...

Flutter——最详细(Badge)使用教程
背景 主要常用于组件叠加上圆点提示; 使用场景,消息数量提示,消息红点提示 属性作用backgroundColor红点背景色smallSize设置红点大小isLabelVisible是否显示offset设置红点位置alignment设置红点位置child设置底部组件 代码块 class Badge…...

SQLServer的系统数据库用别的服务器上的系统数据库替换后做跨服务器连接时出现凭证、非对称金钥或私密金钥的资料无效
出错作业背景: 公司的某个sqlserver服务器要做迁移,由于该sqlserver服务器上数据库很多,并且做了很多的job和维护计划,重新安装的sqlserver这些都是空的,于是就想到了把系统4个系统数据库进行替换,然后也把…...
vue前端面试
一 .v-if和v-show的区别 v-if 和 v-show 是 Vue.js 中两个常用的条件渲染指令,它们都可以根据条件决定是否渲染某个元素。但是它们之间存在一些区别。 语法:v-if 和 v-show 的语法相同,都接收一个布尔值作为参数。 <div v-if"show…...

【网络安全】Host碰撞漏洞原理+工具+脚本
文章目录 漏洞原理虚拟主机配置Host头部字段Host碰撞漏洞漏洞场景工具漏洞原理 Host 碰撞漏洞,也称为主机名冲突漏洞,是一种网络攻击手段。常见危害有:绕过访问控制,通过公网访问一些未经授权的资源等。 虚拟主机配置 在Web服务器(如Nginx或Apache)上,多个网站可以共…...
unattended-upgrade进程介绍
unattended-upgrade 是一个用于自动更新 Debian 和 Ubuntu 系统的软件包。这个进程通常用于定期下载并安装安全更新,以保持系统的安全性和稳定性。 具体来说,这个命令 /usr/bin/python3 /usr/bin/unattended-upgrade --download-only 表示运行 unattend…...

SpringBoot 中多例模式的神秘世界:用法区别以及应用场景,最后的灵魂拷问会吗?- 第519篇
历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…...
基于STM32设计的智能婴儿床(ESP8266局域网)_2024升级版_180
基于STM32设计的智能婴儿床(采用STM32F103C8T6)(180) 文章目录 一、设计需求【1】项目功能介绍【2】程序最终的运行逻辑【3】硬件模块组成【4】ESP8266模块配置【5】上位机开发思路【6】系统功能模块划分1.2 项目开发背景1.3 开发工具的选择1.4 系统框架图1.5 系统原理图1.6 硬…...

C++(第四天----拷贝函数、类的组合、类的继承)
一、拷贝构造函数(复制构造函数) 1、概念 拷贝构造函数,它只有一个参数,参数类型是本类的引用。如果类的设计者不写拷贝构造函数,编译器就会自动生成拷贝构造函数。大多数情况下,其作用是实现从源对象到目…...

第一课:接口配置IP地址:DHCP模式
希望pc1,pc2,pc3自动分配到ip地址。 实验拓扑: 配置:高级一点的路由器还是手动配置: [R1]int g0/0/0 [R1-g0/0/0]ip address 192.168.1.1 255.255.255.0 打开PC1,切换到DHCP模式,点击应用,再到命令行输入ipconfig&…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...