了解Unity编辑器之组件篇Scripts(六)

Scripts:有Unity提供的一些脚本插件(自己新建的脚本也会出现在里面)

一、TMPro:有一些与文字显示和排版相关的脚本

1.TextContainer(文本容器):TextContainer 是一个内容框,用于定义文本的显示范围。通过设置 TextContainer 的边界,可以控制文本在屏幕上的位置和大小。

 

(1)Anchor Position(锚点位置):锚点位置决定了父对象(通常是 RectTransform)中文本容器的起始位置。它可以是矩形对象的矩形中的一个点,例如左上角、中心等。文本容器将根据锚点位置进行定位和调整。

(2)Dimensions(尺寸):文本容器的尺寸属性定义了文本在父对象中的可见区域范围。这直接决定了文本在屏幕上的展示大小。

(3)Margins(边距):通过设置边距,你可以在文本和容器边缘之间创建空白区域。边距为文本提供了一定的留白,并可以调整文本的布局位置和间距。

2.TMP_ScrollbarEventHandler(滚动条事件处理器):该脚本用于处理与 TMP_Scrollbar(TMP 滚动条)相关的事件。它可以监听滚动条的滑动事件和按钮点击事件,并根据滚动条的操作进行文本的滚动。

 

(1)Is Selected:可用于检测 TMP_ScrollbarEventHandler 是否处于选中状态,以便在适当时机对滚动条进行响应和操作

3.TMP_SelectionCaret(文本选择光标):TMP_SelectionCaret 脚本用于显示和控制文本的选中光标。它可以根据用户的选择操作来定位和渲染光标。

 

(1)Material(材质):指定选择光标的渲染材质。通过更改材质,可以改变选择光标的外观效果,例如颜色、纹理等。

(2)Color(颜色):用于设置选择光标的颜色。可以通过更改颜色值或使用透明度来调整选择光标的显示方式。

(3)Raycast Target(射线检测目标):指定选择光标是否响应射线检测。当设置为 true 时,选择光标可以被鼠标点击、触摸等输入事件检测到;当设置为 false 时,选择光标将被忽略。

(4)Raycast Padding(射线检测边距):定义选择光标的射线检测边距。可以设定一个边距值,以便为选择光标增加一定的点击区域,这样更易于用户点击。

(5)Maskable(可遮罩):指定选择光标是否被屏蔽。如果选择光标属于可遮罩对象,可以设置为 true,使得选择光标遵循层级遮罩规则。

(6)On Cull State Changed (Boolean)(剔除状态改变时的处理):这是一个布尔类型的事件处理器。当选择光标的剔除状态(是否在裁剪范围之外)发生改变时,该事件将被触发。可以使用此事件来执行自定义操作。

4.TMP_SpriteAnimator(TMP 精灵动画器):TMP_SpriteAnimator 用于播放基于 
TMP_SpriteAsset(TMP 精灵资源)创建的动画序列。它可以控制精灵的播放速度、循环模式等。

 

5.TMP_SubMesh(TMP 子网格):TMP_SubMesh 是 TextMeshPro 渲染系统中用于绘制具体文字的一部分。一个文本对象可以由多个子网格组成,每个子网格负责绘制相应的文字片段。(添加该脚本时会自动添加Mesh Renderer组件)

 

(1)Font Asset(字体资源):指定该子网格使用的字体资源。字体资源定义了用于绘制文本的字符集、字形信息、字距调整等字体属性。

(2)Sprite Asset(精灵资源):用于指定子网格所使用的精灵资源。精灵资源是一种用于插入到文本中以替代字符或图形的图像资源,可以为文本添加额外的样式和视觉效果。

(3)Sorting Layer(排序层级):用于指定子网格在渲染时的排序层级。根据 Sorting Layer 的设置,可以控制不同子网格之间的渲染顺序,确保正确的遮挡关系和显示顺序。

(4)Order in Layer(层级顺序):用于定义在相同 Sorting Layer 内的子网格的绘制顺序。具有较低 Order in Layer 值的子网格将在具有较高 Order in Layer 值的子网格之前进行绘制。

6.TMP_SubMeshUI(TMP 子网格 UI):与 TMP_SubMesh 类似,TMP_SubMeshUI 也是 TextMeshPro 渲染系统中的一部分,用于在UI界面上绘制文字。不同的是,TMP_SubMeshUI 是用于与 Unity 的 UI 系统(Canvas)配合使用的。

 

(1)属性可参考TMP_SubMesh

二、UnityEngine.EventSystems:在Unity中,UnityEngine.EventSystems命名空间是用于处理用户交互事件和管理UI事件系统的一组类。它提供了一种简单而强大的方式来管理和处理用户输入、触摸和点击等事件,并与UI元素进行交互。

UnityEngine.EventSystems中常用的类包括:

(1)EventSystem:事件系统,负责接收、处理和分发输入事件。它是整个UI事件系统的核心,负责将输入事件传递给相应的UI元素。

(2)UIBehaviour:UI行为基类,是所有UI组件的基类。它提供了一些通用的方法和属性,用于处理事件、交互和状态管理等操作。

(3)BaseRaycaster:基础射线检测器,用于处理射线检测和事件穿透。它定义了射线检测的基本接口,可以通过继承它来创建自定义的射线检测器。

(4)PointerEventData:指针事件数据,封装了指针(如鼠标、触摸)相关的数据,如位置、按下状态等。它通过EventSystem传递给UI元素,用于处理和响应用户输入。

(5)EventTrigger:事件触发器,可以为UI元素附加事件响应脚本,自定义触发不同事件时的行为

1.Base Input:用于处理输入事件的基类。

 

它作为其他输入脚本的抽象基类,提供了输入事件的统一接口和常用功能:

处理输入事件:Base Input脚本定义了处理常见输入事件的方法,如按下、抬起、拖拽、滚动等。继承Base Input脚本的子类可以通过重写这些方法来处理具体的输入事件。

抽象化输入源:Base Input脚本将具体的输入源抽象化,使得其他脚本可以方便地切换和扩展输入源。可以根据需要创建不同的子类,如键盘输入、鼠标输入、触摸输入等。

输入状态管理:Base Input脚本可以跟踪和记录输入状态,如按键是否按下、鼠标的位置和滚轮值等。这样可以方便地查询和使用输入状态,例如根据按键状态决定角色的移动方向。

事件系统交互:Base Input脚本可以与Unity的事件系统(Event System)进行交互。它可以通过触发相应的事件(如PointerDown、PointerUp等)与其他UI组件和交互系统进行通信。

三、UnityEngine.TestTools.TestRunner.Callback:用于在测试运行期间进行自定义的回调操作。该接口是在Unity Test Framework中为自动化测试提供的。通过实现UnityEngine.TestTools.TestRunner.Callback接口,并将其注册到Unity Test Runner中,可以在测试运行期间实现自定义的回调逻辑。这样可以灵活地扩展测试框架,并在测试过程中执行特定的操作,例如记录日志、自定义断言或进行额外的验证。

1.Player Quit Handler:通常与测试框架和自动化测试相关。在自动化测试中,我们可能需要在游戏执行完测试后,自动关闭游戏并执行后续的验证、报告生成或清理操作。而玩家退出游戏事件是一个常见的触发点。

 

通过编写Player Quit Handler脚本,你可以在玩家退出游戏时执行一些特定的逻辑,例如:

数据保存:在玩家退出游戏前,你可以使用Player Quit Handler脚本保存游戏中的必要数据或状态,以便在下一次运行或重新加载时恢复这些数据。

关闭资源和连接:当游戏结束时,你可以使用Player Quit Handler脚本关闭游戏中打开的资源、连接或其他外部系统,以确保防止资源泄漏或其他不良影响。

清理操作:你可以在Player Quit Handler脚本中执行一些额外的清理操作,例如删除临时文件、释放内存等,以确保测试环境的整洁和稳定。

2.Test Result Renderer Callback:用于自定义测试结果的渲染方式和呈现效果。它是在测试完成后,在测试结果渲染器中执行自定义回调的事件。

 

默认情况下,Unity的测试框架(Unity Test Framework)会将测试结果显示在测试结果渲染器中。测试结果渲染器提供了一个标准的显示方式,通常以树形结构或列表形式展示测试用例的执行结果、通过或失败等信息。

通过实现Test Result Renderer Callback,你可以修改和扩展测试结果渲染器的行为,例如:

自定义显示方式:你可以根据特定需求,改变测试结果的展示形式。可以调整显示样式、添加额外的元数据、改变布局和颜色等,以更好地满足测试报告的需求。

扩展报告功能:你可以通过Test Result Renderer Callback在测试结果中添加额外的信息或功能。例如,在测试结果渲染器中显示附加的日志、截图或其他自定义属性。

统计和汇总:你可以利用Test Result Renderer Callback来汇总和统计测试结果。例如,计算通过率、测试耗时或生成自定义的测试报告。

四、UnityEngine.Timeline:该命名空间提供了一种用于创建和管理时间轴(Timeline)的框架。UnityEngine.Timeline主要用于以下作用:

时间轴编辑:UnityEngine.Timeline允许开发者在Unity中创建和编辑复杂的时间轴,以控制游戏、动画、剧情或其他场景中的事件和动作的播放顺序和时序关系。开发者可以通过时间轴编辑器创建关键帧和轨道,并管理对象在特定时间点上的活动和状态。

动画剪辑和混合:通过UnityEngine.Timeline,开发者可以将动画剪辑(Animation Clip)和时间轴混合在一起,创建复杂的动画序列。时间轴可以调整动画剪辑的播放速度、循环次数、交叉淡入淡出以及动画剪辑之间的过渡效果等。

音频剪辑和混合:除了动画剪辑,开发者还可以在时间轴中管理音频剪辑(Audio Clip)。可以将多个音频剪辑混合在一起,控制它们的播放顺序、音量和过渡效果,从而创建电影、游戏场景或其他多媒体作品中的音频效果和背景音乐。

事件触发和交互:时间轴可以用于触发和管理游戏中的事件、动作和交互行为。通过设置时间轴上的关键帧和事件,开发者可以在特定的时间点上执行代码、触发粒子效果、切换场景或执行其他自定义的逻辑。

剧情设计和演出:借助UnityEngine.Timeline,开发者可以在游戏或其他互动体验中创建和设计复杂的剧情和演出。通过时间轴编辑器,可以安排角色对话、相机切换、特殊效果和剧情事件的发生,从而创造出丰富、有序和生动的故事体验。

1.Signal Receiver:用于接收和处理信号的组件或对象。它通常与事件系统结合使用,用于监听和响应特定的信号或事件。

 

Signal Receiver的主要作用包括:

监听事件:Signal Receiver可以注册监听器,用于监听和接收特定类型的信号或事件。当某个信号被触发时,Signal Receiver会相应地执行预定义的行为或方法。

响应信号:一旦Signal Receiver监听到信号或事件触发,它会相应地执行事先定义的操作、行为或方法。这使得开发者能够以响应式的方式处理和处理特定的信号。

解耦代码:Signal Receiver提供了一种解耦代码的方式,即事件源和事件处理之间的解耦。通过信号和Signal Receiver,组件或对象可以将自己的信号发送给Signal Receiver,而不需要直接调用其他对象或组件的方法。

灵活性和可扩展性:Signal Receiver的设计使得应用程序的逻辑可以轻松扩展和修改。通过添加或删除Signal Receiver,以及定义新的信号类型,可以很容易地实现新的功能或逻辑。

事件驱动编程:使用Signal Receiver可以实现事件驱动编程的模式。应用程序中的不同组件或对象可以通过发送和接收信号的方式进行交流和协作,以实现更灵活、松耦合和可复用的代码结构。

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

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

相关文章

C++多线程编程(包含c++20内容)

C多线程编程(包含c20内容) 文章目录 C多线程编程(包含c20内容)线程通过函数指针创建线程通过函数对象创建线程通过lambda创建线程通过成员函数创建线程线程本地存储取消线程自动join线程从线程获得结果 原子操作库原子操作原子智能指针原子引用使用原子类型等待原子变量 互斥互…

flask中的werkzeug介绍

flask中的werkzeug Werkzeug是一个Python库,用于开发Web应用程序。它是一个WSGI(Web Server Gateway Interface)工具包,提供了一系列实用功能来帮助开发者处理HTTP请求、响应、URLs等等。Werkzeug的设计非常灵活,可以…

gazebo学习记录(杂乱)

一、完整系列教程 如何使用gazebo进行机器人仿真(很重要):https://zhuanlan.zhihu.com/p/367796338 基础教程和关键概念讲解(很重要):https://zhuanlan.zhihu.com/p/363385163 古月居:http://w…

ffmpeg批量分割视频解决视频前几秒黑屏的问题解决

echo 请输入视频地址: set /p fp echo 请输入开始时间: set /p st echo 请输入结束时间: set /p et echo 请输入分片时间: set /p sgt echo 注意:循环范围参数要空格。 for /l %%i in (%st%, %sgt%, %et%) do call :aa…

《TCP IP网络编程》第十二章

第 12 章 I/O 复用 12.1 基于 I/O 复用的服务器端 多进程服务端的缺点和解决方法: 为了构建并发服务器,只要有客户端连接请求就会创建新进程。这的确是实际操作中采用的一种方案,但并非十全十美,因为创建进程要付出很大的代价。…

了解Unity编辑器 之组件篇Effects(十一)

一、Halo:是一个可用于游戏对象的特效组件,它可以在对象周围添加一个光晕效果 Color属性: 用于设置Halo的颜色。你可以通过选择颜色面板中的颜色来指定光晕的外观。选择适当的颜色可以使光晕与游戏场景中的其他元素相匹配或突出显示。 Size属性: 用于设…

利用读时建模等数据分析能力,实现网络安全态势感知的落地

摘要:本文提出一种基于鸿鹄数据平台的网络安全态势感知系统,系统借助鸿鹄数据平台读时建模、时序处理、数据搜索等高效灵活的超大数据存储和分析处理能力,支持海量大数据存储、分类、统计到数据分析、关联、预测、判断的网络安全态势感知能力…

【Docker】制作Docker私有仓库

文章目录 1. 安装私有镜像仓库2. 镜像仓库可视化3. 参考资料 1. 安装私有镜像仓库 由于之后我们需要推送到私有镜像仓库,我们预先安装好,使用的是Docker公司开发的私有镜像仓库Registry。 下载Registry的Docker镜像; docker pull registry:2使…

❤️创意网页:创意视觉效果粒子循环的网页动画

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:欢迎踏入…

k8s: kubectl: logs: rotate 问题

设计文档: https://github.com/kubernetes/design-proposals-archive/blob/main/node/kubelet-cri-logging.md https://kubernetes.io/docs/concepts/cluster-administration/logging/ 当kubenet存放container的日志满了的时候,会发生rotate,当rotate发生的时候,是由kubec…

分布式I/O,IT和OT融合少不了它

长期以来信息技术IT和操作运营技术OT是相互隔离的,随着大数据分析和边缘计算业务的对现场级实时数据的采集需求,IT和OT有了逐渐融合的趋势。IT与OT融合,它赋予工厂的管理者监控运行和过程的能力大为增强,甚至可以预测到可能发生的…

day48-ajax+SSM分页

AjaxSSM分页 非分页版controller及html: 分页模糊查询controller: Postman测试(无网页): 分页网页: 分页网页中添加模糊查询: 分页网页中实现添加功能: (1&am…

JAVASE---数据类型与变量

1. 字面常量 常量即程序运行期间,固定不变的量称为常量,比如:一个礼拜七天,一年12个月等。 public class Demo{ public static void main(String[] args){ System.Out.println("hello world!"); System.Out.println(…

QT【day4】

chat_QT服务器端&#xff1a; //.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器类 #include<QTcpSocket> //客户端类 #include<QMessageBox> //对话框类 #include<QList> //链表容器 #inc…

操作系统攻击:早期WindowsMS10-046漏洞

目录 概述 漏洞成因 利用过程 漏洞复现 漏洞修复 概述 本次介绍早期的windows高危漏洞——MS10_046_SHORTCUT_ICON_DLLLOADER &#xff0c; 该漏洞可以通过浏览器跳转网络资源的方式利用&#xff0c;结合xss攻击用户的系统 危险性极高。 漏洞成因 漏洞成因&#xff1a; m…

c++的函数定义中,只提供形参类型,不提供形参名

如上图所示&#xff0c;显示了 c 语法里的一种不常见的应用。若没有对某个形参的后续使用的要求&#xff0c;可以不提供形参名的&#xff0c;也能编译通过。这么写法的作用&#xff0c;可以以第一个参数的类型不同&#xff0c;来实现函数的重载。在阅读源码&#xff0c;在vs201…

面试总结-Redis篇章(八)——Redis分布式锁

JAVA 面试总结-Redis分布式锁 模拟抢券场景通过下面方法添加Synchronized锁来防止上述情况&#xff0c;如果上面是单体服务没有问题&#xff0c;但是如果项目是集群部署&#xff0c;会出现下面的问题&#xff0c;因为Synchronized是属于本地的锁端口8080和8081同时访问&#xf…

【状态估计】基于UKF、AUKF的电力系统负荷存在突变时的三相状态估计研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

51单片机——串行口通信

目录 1、51单片机串口通信介绍 2、串行口相关寄存器 2.1 、串行口控制寄存器SCON和PCON 2.1.1 SCON&#xff1a;串行控制寄存器 (可位寻址) 2.1.2 PCON&#xff1a;电源控制寄存器&#xff08;不可位寻址&#xff09; 2.2、串行口数据缓冲寄存器SBUF 2.3、从机地址控制…

微信小程序完整项目实战(前端+后端)

基于微信小程序的在线商城点单系统 前言&#xff1a;闲来无事&#xff0c;想以后自己开一个小超市或者小吃店&#xff0c;能够支持线上下单&#xff0c;既方便客户也方便自己。系统采用C#语言作为后端实现与小程序的交互&#xff0c;给用来学习或者想自己开个小店的朋友当个参考…