简易虚拟培训系统-UI控件的应用2

目录

Text组件-文字显示

Text组件-文字动态显示

ScrollView组件

使用文件流动态读取硬盘文件


  本篇介绍Text和ScrollView的简单应用,以及读取硬盘中.txt文本的内容

Text组件-文字显示

  1. 加入Text:在mainCanvas上点右键->UI->选择Text和TextMeshPro都可以。

  以下以TextMeshPro为例,第一次选择TextMeshPro时,会提示导入TMP组件,点击第一个按钮即可:

   2. 修改一下Text的名字以便于识别:

  

   3. 在场景中修改和移动这个文本框的大小和位置:

  4. 修改、调整显示的文字:找到Text控件的TextInput,在输入框中输入想要的文字,并可调整字体、大小、颜色等。需要注意的是,中文字一般无法正常显示,需要做特殊设置(详见引用Unity 中文不显示问题_unity中文字体不能打出来_陈少伯的博客-CSDN博客)

  

Text组件-文字动态显示

   在系统中经常会使用代码来动态修改文字的内容,需要使用到UI控件时,需要在头文件中引用:

using UnityEngine.UI; //使用到UI类时需要引用
using TMPro;   //使用TextMeshPro时需要引用

   测试代码如下,只要获取到文本上的text组件,就能修改它的内容:

public class TextChange : MonoBehaviour
{public TMP_Text titleText;  //TextMeshPro需要使用的类型void Update(){//当按下K键时,文字改变if (Input.GetKey(KeyCode.K)){titleText.text = "系统开始运行";}}
}

   将这个TextChange代码挂到场景的任意一个节点上(我这边是建立了一个空节点,所有没地方挂的代码都挂在这里),并拖入titleText节点:

   运行结果如下,按下K按键时文字改变:

 ScrollView组件

  当显示的文字太多时,需要在ScrollView中滑动显示,使用方法如下:

  1.  加入ScrollView:在mainCanvas上点右键->UI->选择ScrollView,ScrollView下的子节点和组件较多,以下介绍重要的组成部分。

  其中Content里面,我们可以放入需要显示的内容,文字、图片或者其他控件都可以。

   2. 在ScrollView->Viewport->Content内加入Text:在Content上点右键,加入Text

   3. 调整Text的大小,并且在Text中输入需要显示的内容,当文字比较多时,要将Content的大小调整到所有文字都能够显示的长度(右图白色的框):

    

   运行效果:

   

   4. ScrollView中放入图片:在ScrollView->Viewport->Content上点右键,加入Image,并调整Content的长度,以便于足够显示所有内容

  

  运行效果:

使用文件流动态读取硬盘文件

  当显示的文本和图片较多时,需要在UI中建立很多个Text组件,且需要调整字体、颜色等,比较麻烦,可以考虑在场景运行时,使用文件流读取硬盘上的TXT文件,动态地写进Text组件内容中。方法如下:

  1. 使用前文的设置的ScrollView为例,使用Content下的Text(TMP)来显示文本。

 

   2. 在硬盘上存储若干个TxT文本,每一项显示的内容存储一个txt文档。建议在Resources下建立一个存放文件夹记事本的文件夹。另外还需要注意的是,txt文档尽量使用UTF-8的存储格式。

    

   3. 编辑代码:

  文件流需要使用的命名空间如下:

using System.IO;
using System.Text;

   代码如下:

public class textShow : MonoBehaviour
{public TMP_Text introText;  //载入显示文本的Text控件void Start(){introText.text = ReadTxt("introTxt", "01_systemIntro");}public static string ReadTxt(string fileName,string txtFile){string path= "Assets/Resources/" + fileName + "/" + txtFile + ".txt"; //文本存放的路径string content="未读到文件内容";FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs, Encoding.UTF8);if (null == sr)Debug.Log("读取失败");elsecontent = sr.ReadToEnd();sr.Close();return content;}
}

   4. 将代码挂在场景内的任意节点上(本文挂在场景的一个空节点Empty上),并将ScrollView-Content下的Text(TMP)拖入Text变量内:

   运行效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/63920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯 2240. 买钢笔和铅笔的方案数c++解法

最近才回学校。在家学习的计划不翼而飞。但是回到学校了,还是没有找回状态。 现在是大三了,之前和同学聊天,说才大三无论是干什么,考研,找工作,考公,考证书 还都是来的及的。 但是心里面…

linux C编程 获取系统时间

1.clock_gettime #include<time.h> int clock_gettime(clockid_t clk_id,struct timespec *tp); struct timespec {time_t tv_sec; /* 秒*/long tv_nsec; /* 纳秒*/ }clk_id : CLOCK_BOOTTIME&#xff0c;以系统启动时间为时间原点的时间体系&#xff0c;不受其它因素的…

云计算在大数据分析中的应用与优势

文章目录 云计算在大数据分析中的应用云计算在大数据分析中的优势云计算在大数据分析中的示例未来发展和拓展结论 &#x1f389;欢迎来到AIGC人工智能专栏~云计算在大数据分析中的应用与优势 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&…

设计模式-6--装饰者模式(Decorator Pattern)

一、什么是装饰者模式&#xff08;Decorator Pattern&#xff09; 装饰者模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你在不修改现有对象的情况下&#xff0c;动态地将新功能附加到对象上。这种模式通过创建一个包装类&#xff0c;…

Unity编辑器扩展 | 编辑器扩展基础入门

前言 Unity编辑器扩展 | 编辑器扩展基础一、基本概念二、核心知识点 简述三、相关API 总结 前言 当谈到游戏开发工具&#xff0c;Unity编辑器是一个备受赞誉的平台。它为开发者提供了一个强大且灵活的环境&#xff0c;使他们能够创建令人惊叹的游戏和交互式体验。然而&#xf…

MusicBrainz Picard for Mac :音乐文件ID3编辑器

MusicBrainz Picard for Mac是一款macOS平台的音乐文件ID3编辑器&#xff0c;能够帮助我们在Mac电脑上编辑音乐文件的ID3标签信息&#xff0c;包括艺人、专辑等信息&#xff0c;非常快速和简单方便。Picard是下一代MusicBrainz标记应用程序。 这个新的标签概念是面向专辑的&…

会计--出纳实操实务小白入门

文章目录 P1、出纳基础一、出纳与会计区别二、出纳的具体工作三、出纳的工作流程&#xff08;日、月、年工作安排&#xff09; P2、出纳技能1&#xff1a;大小写金额以及日期书写规范一、数字书写要求二、小写金额“封头”与“封尾”三、大写金额“封头”与“封尾”四、日期大写…

sql:SQL优化知识点记录(五)

&#xff08;1&#xff09;explain之例子 &#xff08;2&#xff09;索引单表优化案例 上面的功能已经实现&#xff0c;但是分析功能&#xff0c; 使用explain分析这条sql&#xff1a; 发现type为All Extra&#xff1a;有Using filesort &#xff08;文件内排序&#xff09; 这…

stable diffusion实践操作-宽高设置以及高清修复

系列文章目录 stable diffusion实践操作 文章目录 系列文章目录前言一、SD宽高怎么设置&#xff1f;1.1 宽高历史 二、高清修复总结 前言 主要介绍SD的宽高设置以及高清修复 一、SD宽高怎么设置&#xff1f; 1.1 宽高历史 SD生成256256图片效果最好。512512是SD一直使用的画…

RT-Thread 中断管理学习(一)

中断管理 什么是中断&#xff1f;简单的解释就是系统正在处理某一个正常事件&#xff0c;忽然被另一个需要马上处理的紧急事件打断&#xff0c;系统转而处理这个紧急事件&#xff0c;待处理完毕&#xff0c;再恢复运行刚才被打断的事件。生活中&#xff0c;我们经常会遇到这样…

OBS Studio 30.0 承诺在 Linux 上支持英特尔 QSV,为 DeckLink 提供 HDR 回放功能

导读OBS Studio 30.0 现已推出公开测试版&#xff0c;承诺为这款广受欢迎的免费开源截屏和流媒体应用程序提供多项令人兴奋的新功能&#xff0c;以及大量其他更改和错误修复。 OBS Studio 30.0 承诺在 Linux 上支持英特尔 QSV&#xff08;快速同步视频&#xff09;、WHIP/WebRT…

Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习&#xff08;三&#xff09; 本教程为native code学习笔记&#xff0c;希望能够帮到有需要的人 我的电脑系统为ubuntu 22.04&#xff0c;当然windows也是可以的&#xff0c;区别不大 对java中的对象变量进行操作 首先我们新建一个java的类 pub…

xsschallenge靶场练习1-13关

文章目录 第一关第二关第三关第四关第五关第六关第七关第八关第九关第十关第十一关第十二关第十三关 第一关 观察页面 http://192.168.80.139/xsschallenge/level1.php?nametest尝试在name后面输入最近基本的xss语法 <script>alert(1)</script>第二关 查看页面源…

el-date-picker 等 点击无反应不回显问题解决

如上图&#xff0c;编辑回显正常&#xff0c;但是时间控件在拖动过程中时间不会跟随改变。 解决办法&#xff1a; <el-date-picker input"onInput()" ...><el-input input"onInput()" ...>js中onInput() {this.$forceUpdate();},

2018ECCV Can 3D Pose be Learned from2D Projections Alone?

摘要 在计算机视觉中&#xff0c;从单个图像的三维姿态估计是一个具有挑战性的任务。我们提出了一种弱监督的方法来估计3D姿态点&#xff0c;仅给出2D姿态地标。我们的方法不需要2D和3D点之间的对应关系来建立明确的3D先验。我们利用一个对抗性的框架&#xff0c;强加在3D结构…

【设计模式】Head First 设计模式——构建器模式 C++实现

设计模式最大的作用就是在变化和稳定中间寻找隔离点&#xff0c;然后分离它们&#xff0c;从而管理变化。将变化像小兔子一样关到笼子里&#xff0c;让它在笼子里随便跳&#xff0c;而不至于跳出来把你整个房间给污染掉。 设计思想 ​ 将一个复杂对象的构建与其表示相分离&…

ArcGIS Maps SDK for JS(一):概述与使用

文章目录 1 概述2 如何使用ArcGIS Maps SDK for JavaScript2.1 AMD 模块与 ES 模块2.2 AMD 模块和 ES 模块比较 3 几种安装方式3.1 通过 ArcGIS CDN 获取 AMD 模块3.2 通过 NPM 运行 ES 模块3.3 通过 CDN 获取 ES 模块3.4 本地构建 ES3.5 本地构建 AMD 3 VSCode下载与安装2.1 下…

#systemverilog# 之 event region 和 timeslot 仿真调度(六)疑惑寄存器采样吗

一 象征性啰嗦 想必大家在刚开始尝试写Verilig HDL代码的时候,都是参考一些列参考代码,有些来自于参考书,有些来自于网上大牛的笔记,甚至有写来自于某宝FPGA开发板的授权代码。我还记得自己当时第一次写代码,参考的是一款Altera 芯片,结合Quartus 开发软件, 在上面练习…

常用框架分析(7)-Flutter

框架分析&#xff08;7&#xff09;-Flutter 专栏介绍Flutter核心思想Flutter的特点快速开发跨平台高性能美观的用户界面 Flutter的架构框架层引擎层平台层 开发过程使用Dart语言编写代码编译成原生代码热重载工具和插件 优缺点优点跨平台开发高性能美观的用户界面热重载强大的…

Redis 7 第四讲 数据持久化

总体 RDB 介绍 RDB 持久化以指定的时间间隔执行数据集的时间点快照 。 把某一时刻的数据和状态以文件的形式写到磁盘上,即使出现故障宕机,快照文件也不会丢失,数据的可靠性得到保证。快照文件就是RDB(Redis DataBase)文件(dump.rdb) 作用 在指定的时间间隔内将内存中的数…