Unity UI制作新的记录

news/2024/9/20 23:20:44

也是玩上 unity 了家人们。
记录一下与 ui 界面斗智斗勇的半个月。

TextMeshPro

textMeshProUGUI.preferredHeight 获取文本长度,便于修改滚动条长度或文本物体长度。
TextMeshPro 中的使用的文本 asset 可以在导入字体 font 文件之后右键 -> create -> TextMeshPro -> font asset -> SDF 这样创造可以被 text 使用的 font asset
在 TextMeshPro 的 text 中加入文本可以使用以下代码。

textMeshProUGUI.text = textMeshProUGUI.text + str + '\n' + '\n';

Scroll Rect

一个滚动条组件,在 content 中填入子对象就可以让子对象进行滚动。
一般来说,还要再在添加了 scroll rect 组件的对象上再添加一个 rect mask2D 这样就能让滚动的对象只显示一部分。
滚动条的位置由一个小数表示,这个小数记录了滚动条滚动到的位置在整个滚动条中的比例,如 sr.verticalNormalizedPosition = 0;
rectTransform.sizeDelta 是 scroll rect 的大小,是一个 \(vector2\) 类型,一个将 sr 长度调整为 text 长度的标准代码如下。

tmp = textMeshProUGUI.preferredHeight + 10f;
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, tmp);

文件读取

想要读取一个文件,就需要这个文件的相对地址,可以参考以下代码,“文件”文件夹就在 Asset 文件夹中。

public string FPath = "文本";
public string fullPath;public void Read()
{string filePath = num.ToString() + ".txt";fullPath = Path.Combine(Application.dataPath, Path.Combine(FPath, filePath));
}

接着是读取文件,使用 File.ReadAllText 函数,\(csharp\) 对于逐字符阅读并不友好,所以最好直接读入大字符串再用 Split 函数切割。
这个函数的括号中填入切割指示符,在文本末尾不要加入指示符,否则会单独切割出一个换行符。

if (File.Exists(fullPath))
{Debug.Log(num.ToString());string TMP = File.ReadAllText(fullPath);text = TMP.Split('>');
}

菜单

下面给出一个切换菜单的样例。

public void SwitchTo(GameObject _menu)
{for(int i = 0; i < transform.childCount; i++)transform.GetChild(i).gameObject.SetActive(false);if(_menu != null){//Time.timeScale = 0f;_menu.gameObject.SetActive(true);UIManager.instance.isInCanvas = true;}
}

Trivia

所有的 GetComponent 操作一定要在 Awake 中完成,并且在 inspector 中完成所有赋值。
不然很容易导致 Object reference not set to an instance of an object 的报错。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

opencascade Bnd_OBB源码学习 OBB包围盒

opencascade Bnd_OBB OBB包围盒前言 类描述了定向包围盒(OBB),比轴对齐包围盒(AABB)更紧密地包围形状的体积。OBB由盒子的中心、轴以及三个维度的一半定义。与AABB相比,OBB在作为非干扰物体的排斥机制时可以更有效地使用。 方法 1. 空构造函数 //! 空构造函数 Bnd_OBB() …

Scala安装与环境配置详解教程

本文参考来源: http://mengmianren.com/zhihuishu2020/641069.htmlScala运行在java的JVM之上,因此需要先安装Java运行环境 一、JDK8的下载和安装及环境变量配置 使用的jdk版本是:jdk-8u191-windows-i586.exe https://pan.baidu.com/s/1RNNb7lcqKHC_2h0iiTlqFg?pwd=9t5e 提取…

day2-2

今天进行了一次小测验,仍与基础的增删改查有关。 题目的要求是通过Java写出一个建议系统,能够历遍输出各个数据,能够添加,删除,修改数据,能够根据编号查找到对应的数据。程序如下该程序能够完成这些要求,也具有一定的健全性。

大学C++程序设计课程开发指南——开发环境搭建

前言 由于某些大学程序设计课程仍然在使用VC6.0这一上古工具,不太适合学生与现代开发生产接轨,并且也有可能出现兼容问题等,故编写此文,仅供参考。 使用 Visual Studio 在介绍Visual Studio(此后简称VS)前,先给大家介绍这一工具的发展。 其前身正是VC6.0(全称Visual C++…

LLM DATASET

大模型的能力来源 https://arxiv.org/pdf/2402.18041 大模型合规来源 https://arxiv.org/html/2402.12193v2 大模型的罪恶检测来源 https://www.kaggle.com/datasets/odins0n/ucf-crime-dataset/data code math https://github.com/mlabonne/llm-datasetsMath & LogicLLMs …

2024-9-20

ArrayList类 获取元素

在链接与运行地址不同时gdb的调试方法

搭建一个链接和运行不同的环境 SECTIONS {. = 0xffff000000080000,/* . = 0x80000, */.text.boot : { *(.text.boot) }.text : { *(.text) }.rodata : { *(.rodata) }..... }-s还可以看到符号都链接到高地址去了但是elf文件中有详细的地址信息,如果后续qemu加载的是elf的话就会…

排队论——随机服务系统仿真精解

排队论作为研究随机服务系统的重要工具,专门研究系统中客户到达、排队、服务和离开的过程。排队论的核心目的是通过数学建模和分析,研究系统的性能指标,如平均等待时间、队列长度、系统的吞吐量等。虽然排队论提供了强大的数学工具来分析随机服务系统,但在许多复杂的实际问…