U4S5L3——输入、字体相关
U4S5L3——输入、字体相关
文本输入相关参数
Text Input:文本输入框
输入的文本会在控件中显示
默认字体不包括中文,因此直接输入中文会无法显示
需要创建中文字体后,才能正常显示中文
Enable RTL Editor:启用 RTL 编辑器
开启该选项后,可以从右到左显示文本,
并且会在下方看到一个额外的输入框 RTL Text Input
可以在其中查看反转的文本并直接对它进行编辑
Text Style:文本样式,可以设置文本控件的样式
H1、H2、H3:代表标题级别
C1、C2、C3:代表颜色级别,用于定义不同文本的颜色,通常用于区分信息
Quote:代表引用文本像是,一边表示引用别人的内容
Link:超链接文本格式样式
Normal:普通话正文文本样式
样式可以自定义,详见:U4S5L15——样式表
字体参数相关
Font Asset:字体资源
可以选择默认的字体资源,TMP中的字体可以自定义
关于字体自定义,详见:U4S5L9——字体资源创建的基本流程
Material Preset:材质预设
TMP字体的显示,都 ...
U4S5L2——初始化TMP的UI文本控件
U4S5L2——初始化TMP的UI文本控件
创建 TMP UI 文本对象
两种方式:
Hierarchy窗口右键 ——> UI ——> TextMeshPro相关控件
工具栏点击GameObject ——> UI ——> TextMeshPro相关控件
UGUI相关组件
RectTransform:矩形变换组件在UGUI中有详细讲解
Canvas Renderer:画布渲染器
Cull Transparent Mesh(剔除透明网格):对于文本建议勾选
TextMeshPro - Text (UI) 组件参数
参数将分成以下几部分进行讲解
输入相关
字体相关
颜色相关
间距相关
对齐相关
包裹溢出相关
UV映射相关
额外设置
对于最下方的 SDF 材质球相关的设置,详见:U4S5L19——SDF 材质球和参数设置
脚本控制TMP UI组件
详见:U4S5L7——脚本控制TMP
U4S5L1——导入TMP
U4S5L1——导入TMP
导入TMP相关资源
我们在正式使用学习TMP之前,需要导入它的必备资源和事例拓展内容
如果老版本中想要使用TMP,只需要在Package Manager中下载即可
Unity 2020 以上版本,两种方式:
方式一:顶部工具栏:Window ——> TextMeshPro ——> Import TMP Essential Resources(导入TMP基本资源)
方式二:在 Hierarchy 窗口中右键创建TMP相关的对象时,在弹出窗口中点击 Import TMP Essentials
导入成功后,会在 Assets 窗口中看到Text Mesh Pro文件夹,其中就是TMP的相关基础资源
导入TMP示例和附加功能
Unity 2020 以上版本,两种方式:
方式一:Window ——> TextMeshPro ——> Import TMP Examples and Extras(导入TMP事例和附加功能)
方式二:在 Hierarchy 窗口中右键创建 TMP 相关的对象时,在上一步弹出的窗口 ...
U4S5——Text Mesh Pro
U4S5——Text Mesh Pro
Text Mesh Pro
Text Mesh Pro 最初是由游戏开发者 Stephan Bouchard(斯蒂芬·布沙尔)开发的, 是一个主要用于处理2D、3D文本的工具。
后来 Unity 注意到了这款强大的文本渲染工具,于 2017 年对该工具进行了收购
在 Unity 2018 版本时,Text Mesh Pro 成为了 Unity 的内置软件包,可以通过 Package Manager 对其进行安装和管理。
从 Unity 2020 版本开始,UGUI 默认的文本控件变成了 Text Mesh Pro
也就是说在 Unity 2020 版本之后,我们在使用 UGUI 时,创建各种和文本相关的控件时,
引擎会默认选择使用 Text Mesh Pro 处理文本控件,虽然我们还可以在 Legacy 页签中,创建老的 Text 文本控件,
但是从 Unity 的发展上来说,学习 Text Mesh Pro 变成了我们的刚需
本系列学习内容
导入TMP
UI文本
初始化TMP的UI文本控件
输入、字体相关
颜色、间距、对齐相关
包裹溢 ...
CS4L15——Lambda表达式
CS4L15——Lambda表达式
lambda表达式
可以将 lambda 表达式 理解为 匿名函数 的缩写
它除了写法不同外,使用上和匿名函数一模一样
都是和委托或者事件 配合使用的
匿名函数存在闭包这个概念,闭包确保了内层的匿名函数可以引用包含在它外层的函数的变量,即使外层函数的已经执行完毕
注意:通过调用 使用闭包变量的匿名函数 时,闭包变量的值不是变量创建时的值,而是在父函数(严格来说是作用域)范围内的最终值!!!
lambda表达式语法
1234567891011//匿名函数delegate (参数列表){};//lambda表达式(参数列表) =>{ //函数体};
使用
无参无返回值
12345Action a = () =>{ Console.WriteLine("无参无返回值的lambda表达式");};a();
输出:
1无参无返回值的lambda表达式
有参
12345Action<int> a2 = (int value) => ...
CS4L14——匿名函数
CS4L14——匿名函数
匿名函数
顾名思义,就是没有名字的函数,它主要用于传递一段简单且不会直接调用(主要通过委托调用)的逻辑
匿名函数的使用主要是配合委托和事件进行使用,直接将函数逻辑传递出去,而不用额外声明一个函数
脱离委托和事件 是不会使用匿名函数的(脱离委托事件也无法调用匿名函数,因为没有函数名让我们调用)
关于匿名函数的简便写法以及闭包等,详见:CS4L15——Lambda表达式
基本语法
1234delegate (参数列表){ //函数逻辑}
何时使用?
函数中传递委托参数时
委托或事件赋值时
匿名函数的声明和使用
注意:使用 delegate 关键字定义的匿名函数最后要加 “;” !!!
匿名函数必须要被一个委托或事件存储,或者作为参数传递,单独声明匿名函数是会报错的
真正调用匿名函数的时候,是在存储这个匿名函数的委托被调用的时候
有返回值的匿名函数不需要在 delegate 前加变量类型,直接在 Func 里或者接收逻辑的委托中指明返回值类型即可
无参无返回值
12345678Action a = delegate() ...
CS4L13——事件
CS4L13——事件
事件
事件是基于委托是存在,是委托的安全包裹
事件用于修饰委托成员变量,让委托的使用更具有安全性
事件和委托的使用基本是一模一样的,事件就是特殊的委托
委托和事件主要区别
事件 不能在外部使用赋值 = 符号,只能使用 += 和 -=,而委托哪里都能用
事件 不能在外部执行 委托哪里都能执行
事件 不能作为函数中的临时变量 委托可以
事件的使用
申明语法:访问修饰符 event 委托类型 事件名;
事件的使用:
事件是作为成员变量存在于类中
委托怎么用,事件就怎么用
事件相对于委托的区别是,事件不能在类外部赋值和调用
注意:事件只能作为成员存在于类和接口和结构体中
1234567891011121314151617181920212223242526272829303132333435363738394041class Test{ //委托成员变量 是用来存储 函数的 public Action myFun; //事件成员变量 也是用来存储 函数的 public event Action myEvent; ...
CS4L12——委托
CS4L12——委托
本章代码关键字
1234delegate //委托声明关键字Action<> //C#自带的无返回值委托Func<> //C#自带的有返回值委托Invoke() //委托可以使用此方法来执行存储于其中的方法
委托
委托是函数(方法)的容器,可以理解为表示特定格式(参数列表和返回值类型一致)的函数(方法)的变量类型,用来存储传递函数(方法)
委托的本质是一个类,用来定义函数(方法)的类型(返回值和参数的类型),
不同的函数(方法)必须对应和各自 “格式“ 一致(即参数列表和返回值类型必须一致)的委托
简单理解 委托 就是装载、传递函数的容器而已,可以使用委托变量来 存储函数 或者 传递函数
系统已经提供了很多委托给我们用:
Action:没有返回值,参数提供了 0-16 个委托给我们用
Func: 有返回值,参数提供了 0-16 个委托给我们用
委托可以让我们接收外部传入的函数,然后一并执行,这在UI系统中的为按钮等控件定义触发的行为时将非常有用
基本语法
关键字:delegate
语法:访问修饰 ...
CS4L11——泛型栈和队列
CS4L11——泛型栈和队列
泛型栈和泛型队列
Stack<> 和 Queue<> 是 C# 为我们封装好的泛型容器,它们是 Stack 和 Queue 的泛型实现
使用 Stack<> 和 Queue<> 需要引用 System.Collections.Generic 这个命名空间
实例化一个 Stack<> 和 Queue<> 必须要指明它要装载什么类型的元素
12345678910using System.Collections.Generic;class Program{ static void Main(string[] args) { Stack<int> stack = new Stack<int>(); Queue<object> queue = new Queue<object>(); }}
使用上 和之前的 Stack 和 Queue 一样 ...
CS4L10——LinkedList<>
CS4L10——LinkedList<>
本章代码关键字
12345678910111213141516171819//链表LinkedList<> //链表类linkedList<>.AddLast() //在链表尾部添加元素linkedList<>.AddFirst() //在链表头部添加元素linkedList<>.Find() //获取指定值的节点linkedList<>.AddAfter() //在某个节点后添加节点linkedList<>.AddBefore() //在某个节点前添加节点linkedList<>.RemoveFirst() //移除头节点linkedList<>.RemoveLast() //移除尾节点linkedList<>.Remove() ...