了解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可以实现事件驱动编程的模式。应用程序中的不同组件或对象可以通过发送和接收信号的方式进行交流和协作,以实现更灵活、松耦合和可复用的代码结构。

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

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

相关文章

AIGC人工智能辅助开发:提升效率、优化代码、实现智能编程

文章目录 1. 什么是AIGC人工智能辅助开发?2. AIGC的优势和应用场景2.1 提升开发效率2.2 优化代码质量2.3 实现智能编程 3. 如何用好AIGC人工智能辅助开发?3.1 选择合适的AIGC工具3.2 理解AIGC的工作原理3.3 逐步应用AIGC辅助开发3.4 主动参与AIGC的学习和…

AI工程师的崛起:填补AI革命中的空白

在一个拥有大约5000名语言学习模型(LLM)研究员,但大约有5000万软件工程师的世界中,供应限制决定了一种新型专业人才—AI工程师的迅猛增长。他们的崛起不仅仅是一种预测,更是对科技世界动态变化的必然反应。AI工程师作为…

【Linux】-进程概念及初始fork

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

使用Gradio构建生成式AI应用程序; Stability AI推出Stable Diffusion XL 1.0

🦉 AI新闻 🚀 Stability AI推出最先进的AI工具Stable Diffusion XL 1.0 摘要:Stability AI宣布推出Stable Diffusion XL 1.0,该版本是其迄今为止最先进的AI工具。Stable Diffusion XL 1.0提供更鲜艳、更准确的图片生成&#xff…

Python开发之手动实现一维线性插值

Python开发之手动实现一维线性插值 1.线性插值法介绍2.手动实现线性插值3.案例一:手动实现线性插值4.使用pandas的插值方法实现要求(推荐)5.案例二:对一组数据进行线性插值和SG滤波处理 前言:主要介绍手动实现一维线性插值以及pandas里面的in…

flink采用thrift读取tablets一个天坑

原先的配置 [INFO] StarRocksSourceBeReader [open Scan params.mem_limit 8589934592 B] [INFO] StarRocksSourceBeReader [open Scan params.query-timeout-s 600 s] [INFO] StarRocksSourceBeReader [open Scan params.keep-alive-min 100 min] [INFO] StarRocksSourceBeRea…

ORCA优化器浅析——QueryToDXL(CDXLLogical+CDXLScalar)主流程

Orca是Pivotal数据管理产品的新查询优化器,包括GPDB和HAWQ。Orca是一个基于Cascades操作时序框架的现代自上而下的查询优化器。虽然许多Cascades优化器与其主机系统紧密耦合,但Orca的一个独特功能是它能够作为独立的优化器在数据库系统之外运行。这种能力…

51:电机(ULN2003D)

1:介绍 我们51单片机使用的是直流电机 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 直流电机主要由永磁体(定子)、线圈(转…

flutter:角标

角标应该非常常见了,以小说app为例,通常会在小说封面的右上角上显示当前未读的章数。 badges 简介 Flutter的badges库是一个用于创建徽章组件的开源库。它提供了简单易用的API,使开发者可以轻松地在Flutter应用程序中添加徽章效果。 官方文…

IDEA 使用 maven 搭建 spring mvc

1. 创建项目 1.1 创建成功之后配置 Spring MVC 1.2 勾选 Spring MVC 2.更改配置文件 2.1 更改web.xml配置 更改为 <servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping>2.2 dispat…

linux查看服务器系统版本命令

有时我们需要在linux服务器上安装DB、Middleware等&#xff0c;为了保证兼容性&#xff0c;我们需要知晓被提供的linux服务器版本是否满足需求&#xff0c;下面就说一说linux查看服务器系统版本命令。 1.cat /etc/redhat-release 适用于&#xff1a;rhel/centos等 2.cat /etc…

3ds max 烘培世界坐标到贴图/顶点色

设置Diffuse 为ObjectNormal Normalize(objectNormal) * 0.5 0.5 把Diffuse烘培到顶点色 烘培Diffuse到贴图 模型按UV展开 右键复制 &#xff0c; 到mesh上粘贴 烘培到贴图 UE使用 贴图导入为BC7 float3 n ObjectNormal*2-1; return float3(n.x,n.z,n.y); // x ,z ,y

工业平板电脑优化汽车工厂的生产流程

汽车行业一直是自动化机器人系统的早期应用领域之一。通过使用具有高负载能力和远程作用的大型机械臂&#xff0c;汽车装配工厂可以实现点焊、安装挡风玻璃、安装车轮等工作&#xff0c;而较小的机械手则用于焊接和安装子组件。使用机器人系统不仅提高了生产效率&#xff0c;还…

原生求生记:揭秘UniApp的原生能力限制

文章目录 1. 样式适配问题2. 性能问题3. 原生能力限制4. 插件兼容性问题5. 第三方组件库兼容性问题6. 全局变量污染7. 调试和定位问题8. 版本兼容性问题9. 前端生态限制10. 文档和支持附录&#xff1a;「简历必备」前后端实战项目&#xff08;推荐&#xff1a;⭐️⭐️⭐️⭐️…

【Vue3】递归组件

1. 递归组件mock数据 App.vue <template><div><Tree :data"data"></Tree></div> </template><script setup lang"ts"> import { reactive } from vue; import Tree from ./components/Tree.vue; interface Tr…

路由的配置

1、在router中设置路由导航跳转函数,在index.js文件中写这句话&#xff1a; 1.1 只要发生跳转, 就会调用这个函数&#xff1a; 1.2 导航的声明函数 2、访问系统访问控制系统如何形成 3、来一个导航守卫的案例&#xff1a;看看导航守卫的案例&#xff0c;写一个Main.Vue 和login…

sky-notes-02

11、HttpClient HttpClient作用&#xff1a; 发送HTTP请求接收响应数据 HttpClient的maven坐标&#xff1a; <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</vers…

docker启动容器报错

报错信息 [rootDream soft]# docker run -it -d -p 8080:8080 tomcat eec9fab6b9ca06d2bbf1467aef05d8020ee60448978e10ac20c38888934f0a0b docker: Error response from daemon: driver failed programming external connectivity on endpoint hungry_euclid (163242f0079e72…

关于c++中虚函数和虚函数表的创建时机问题

以这段代码为例。 #include <iostream>using namespace std;class Parent { public:Parent(){}virtual void func1() {};virtual void func2() {}; };class Child :public Parent { public:Child():n(0),Parent(){cout << "Child()" << endl;}vir…

如何建立ftp server?快解析内网穿透实现外网直接访问

serveru是一款由Rob Beckers开发的获奖的ftp服务器软件&#xff0c;全称为&#xff1a;serv-u ftp server&#xff0c;它功能强大又易于使用。ftp服务器用户通过它用ftp协议能在internet上共享文件。serv-u不仅100%遵从通用ftp标准&#xff0c;也包括众多的独特功能可为每个用户…