Unity UI -- (4)用图像创建菜单背景

news2024/9/29 9:35:47

添加一个基础的设置菜单背景

        设置菜单的元素会安放在一个简单的矩形区域上。我们用一个Image对象来创建这个矩形。

        1. 首先,我们暂时停用Title Text和Settings Button游戏物体。这样会让我们的Canvas看起来更清爽。

        2. 在Hierarchy中,点击右键,选择 UI > Image,将新建的Image对象名字重命名为“Settings Menu”。Image是一个非常简单的UI元素,它可以显示任意我们所导入到项目中的图片。默认情况下,它显示的是一个白色的方块。

        3. 在场景视图,使用Rect Tool将其移动到设置菜单合适的位置并且设置好它的大小。

        4. 在Image组件中,选择颜色选择器,修改一下背景的颜色。在Color窗口中,我们也可以使用Alpha(A)属性来让背景变成半透明状态。

为菜单添加一个“Settings”标题

         1. 在Hierarchy中,在Settings Menu游戏物体上点击右键,选择UI > Text - TextMeshPro。

        这会在Settings Menu下面增加一个子物体,新建的Text(TMP)游戏物体的位置默认会锚定在背景游戏物体的中心位置。

        2. 重命名Text(TMP)游戏物体为“Settings Text”,然后编辑TextMeshPro -Text(UI)组件里的属性,让文字显示更好看一些。

添加一个简单的退出按钮

         我们之前添加了一个设置按钮让我们进入设置菜单。现在我们需要在设置菜单中增加一个退出按钮来返回到主标题界面。这次我们创建按钮的时候,会更深入一点使用Image组件来定制化UI元素。

        1. 在Hierarchy中,在Settings Menu游戏物体上点击右键,选择UI > Button - TextMeshPro。这会在Settings Menu下新增一个新的Button子物体,我们将其重命名为“Exit Button”。

        2. 展开Exit Button游戏物体,选择Text(TMP)子物体。将这个子物体对应的文字(Text Input属性)修改成“X”,并选择一种我们想要的字体。

        3. 场景视图中使用Rect工具或在Inspector中修改Rect Transform组件的属性,修改一下退出按钮为正方形并放置在UI背景的右上角处(当然你也可以自由发挥)。

选择一个9分割的图片(9-Sliced Image)

        通常我们在对图像做横向或纵向缩放时,图像会变扭曲。

        举个例子,下图是一副正常的松鼠的图片。

        在进行水平或纵向缩放后,这只松鼠被拉变形了。

        但当我们对退出按钮的图像做调整时,将其从长方形变成了正方形,图像看起来并没有被挤压或拉伸。

        1. 保持按钮为选中状态,找到Inspector底部的Image Preview窗口。

        我们可以看到,在图像预览窗口中有一个3X3的方格,将图像分成了9个区域。这种技术叫做9-slicing,这样做能够让我们在缩放矩形图片的时候,对角落保持原状,因此不会造成角落的拉伸或压缩。

        下图是一个对比示例:

        关于9-slicing的更多细节,可以参考这里:

Unity - Manual: 9-slicing Spriteshttps://docs.unity3d.com/Manual/9SliceSprites.html         我们可以用自定义的9-sliced图像来替换按钮的默认9-sliced图像,当然对于任何其他的UI Image组件来说也是一样可以被替换的。

        2. 在Image组件中,使用对象选择器按钮来浏览一些工程预先提供的其他UI按钮图像。

探索:继续定制UI

        我们已经知道如何添加和替换UI里的图像了。接下来请自由发挥,让UI变得更好看一点。比如可以用自定义的图像替换设置按钮的背景图,或者在按钮背景的边界处增加边框。

        当我们的UI元素的层次变得更多时,有一点非常重要,我们要了解Canvas的绘制顺序(Draw Order)。物体是按照它们在Hierarchy中列表的顺序被画到屏幕上的,意思是在Hierarchy中更靠下的物体会被画到更靠上的物体之上。

        如果Hierarchy中物体的顺序不正确,则我们可能会得到一些不想要的结果,比如下图:

        要解决这个问题,我们值需要在Hierarchy中,将exit button放到背景边框的下方即可。

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

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

相关文章

探索云原生世界:当前最受欢迎的技术和趋势

文章目录 探索云原生世界:当前最受欢迎的技术和趋势引言:一、云原生概述:1. 什么是云原生?2. 为什么云原生重要?3. 云原生的核心原则和特征。4. 云原生的优势和挑战。 二、核心技术与工具:1. Kubernetes&am…

C语言qsort函数、活字印刷、cmd窗口

一、qsort函数 qsort函数就是快排,可以不用写那么一长串的代码了qvq,要用到stdlib.h库文件 那么具体用法就是 oid qsort(void* base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*)); 当然我们还要用一个比较函数来确定快排…

手机APP性能测试工具PerfDog性能狗安装教程及简单使用

一、前言 PerfDog是一个由腾讯研发的主流性能测试软件。可以提高软件和游戏的运行效率,支持iOS/安卓在移动平台上的性能测试和分析,快速定位和分析性能问题等。无需安装,即插即用,减少繁琐的测试障碍,安卓设备不需要RO…

PCB基础~PCB介质,Vias

PCB介质 • 一般的介质材料 – FR-4(玻璃纤维和环氧基树脂交织而成) • 最常和最广泛使用,相对成本较低 • 介电常数:最大4.7, 4.35500Mhz,4.341Ghz • 可承受的最高信号频率是2Ghz(超过这个值,损耗和串扰…

IDEA中怎么把jar包导入项目中

大作业让生成一个pdf,查找资料发现可以通过pdfbo相关函数调用,但本地缺少这个文件,以这个文件为例子。 一、下载 下载去Apache上下载,Apache PDFBox | Download,,结合自己的java版本啥的下载就行。 我是…

java中使用java8的stream报错java.lang.IllegalStateException: Duplicate key

一、java.lang.IllegalStateException: Duplicate key报错的原因 map的key重复导致的报错Duplicate key 二、java.lang.IllegalStateException: Duplicate key报错的解决方式 list.stream().collect()就是把一个List的查询数据集合转为一个Map,java8的stream方式…

UE5 C++类如何打印日志?

UE5 插件开发指南 前言0. 什么是日志?1.在哪里可以查看日志呢?2. 日志有哪些等级?3. 如何打印到屏幕上?4. 如何更专业的记录日志?4.0 UE_LOG宏语法4.1 自定义日志类别4.2 插件中的日志类别定义前言 在回答这个问题之前,先要给萌新科普一下:什么是日志?以及,在哪里查看日…

自己动手写一个加载器

前言 当在 linux 命令行中 ./ 运行一个程序时,实际上操作系统会调用加载器将这个程序加载到内存中去执行。为了探究加载器的行为,今天我们就自己动手写一个简单的加载器。 工作原理 加载器的工作原理: 从磁盘读取 bin 文件到内存&#xf…

【Python html常用标签】零基础也能轻松掌握的学习路线与参考资料

学习路线 要深入了解Python html常用标签,需要遵循以下学习路线: 1.1 HTML基础知识:了解HTML语言的起源,HTML文档结构和基本标签。学习HTML标签包含但不限于文本标签,图像标签,链接标签,表格标…

canvas的HTML和JavaScript

文章目录 一、canvas元素二、前期准备1. 坐标系2. canvas属性① 获取canvas元素② 把canvas实例化为2D③ 设置路径颜色④ 设置路径宽度⑤ 设置路径末端形状⑥ 设置路径相连时的相连部分形状⑦ 透明度⑦ 虚线 三、绘制图行1. 绘制线段2. 绘制三角形① 空心三角形② 实心三角形 3…

大学四年,我建议你这么学网络安全

在所有关注我的朋友中,大致分为两类,一类是社会人士,有的是安全老手,有的是其它工作但对安全感兴趣的朋友,另一类应该就是大学生了。 尤其随着国家的号召和知识的普及,越来越多的人开始对网络安全感兴趣&a…

ffmpeg日记1011-过滤器-语法高阶,逻辑,函数使用

Author: wencoo Blog:https://wencoo.blog.csdn.net/ Date: 19/05/2023 Details:文章目录 摘要什么是时间线编辑哪些filter支持时间线编辑时间线编辑中,可以使用哪些预设函数常用预设函数功能即使用方法if(x, y)if(x, y, z)gt(x, y)gte(x, y)lt(x, y)lte…

AHB-to-APB Bridge——04apb_tran、apb_if、apb_drv、mem、apb_mon、apb_agt

apb_if放入所有apb需要的信号,以及cb ifndef APB_IF_SV define APB_IF_SVinterface apb_if;logic pclk;logic prst;logic penable;logic …

C++的stack和queue

stack和queue 1.stackstack的模拟实现 2.queuequeue的模拟实现 3.容器适配器3.1. 什么是容器适配器3.2. STL标准库中stack和queue的底层结构3.3. deque的简单介绍3.3.1. deque原理介绍3.3.2. deque的缺陷3.3.3. 为什么选择deque作为stack和queue的底层默认容器 1.stack stack的…

深度学习-第T7周——咖啡豆识别

深度学习-第T7周——咖啡豆识别 深度学习-第T7周——咖啡豆识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目 四、数据预处理1、 加载数据1、设置图片格式2、划分训练集3、划分验证集4、查看标签 2、数据可视化3、检查数据4、配置数据集 五、搭建CNN网络六、…

Vue3+TS知识点补充

一、关于Ref 1.shallowRef() shallowRef 是 Vue 3 中新引入的响应式数据类型之一,它与 ref 类型非常相似,但是有一些不同点。 不同的是,shallowRef 只会对其包装的对象进行浅层次的响应式处理,即如果这个对象的子属性发生改变&…

软件测试——黑盒测试

1.测试概述 1.1综述 本测试报告为计算机程序能力在线测评系统的黑盒测试,黑盒测试可以在不知道程序内部结构和代码的情况下进行,用来测试软件功能是否符合用户需求,是否达到用户预期目标,是否拥有较好的人机交互体验。 图1.1 黑…

media设备节点初始化与Video4Linux初始化

media设备节点初始化与Video4Linux初始化 文章目录 media设备节点初始化与Video4Linux初始化media设备节点初始化Video4Linux初始化 media设备节点初始化 media_devnode_init函数是一个内核初始化函数,用于在Linux内核启动期间进行设备节点初始化。 函数的主要作用…

复习:遥感图像解译复习整理

惭愧,这个课程从始自终就没有认真学过,一部分是因为自己的原因,另一部分也是因为自己的原因。因此,对于整理的资料有不足之处请指正。 另外,资料自word复制,没有时间整理博客的格式。 -- 2023年05月19日记…

深度学习训练营之Densenet网络

深度学习训练营 原文链接环境介绍前言设计理念网络结构实验结果和讨论pytorch实现DenseNet附录 原文链接 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:365天深度学习训练营-第J3周:Densenet网络学习&…