Shader推荐
  • 【三】递归算法
    【三】递归算法
    编程语言中,我们习惯将函数(方法)调用自身的过程称为递归,调用自身的函数称为递归函数,用递归方式解决问题的算法称为递归算法。
  • 【二】时间复杂度和空间复杂度
    【二】时间复杂度和空间复杂度
    算法本身是不分“好坏”的,所谓“最好”的算法,指的是最适合当前场景的算法。挑选算法时,主要考虑以下两方面因素:时间复杂度和空间复杂度。
  • 【一】算法是什么
    【一】算法是什么
    提到“算法”,很多人都觉得它高深莫测、晦涩难懂。事实上的确存在一些算法,学员必须具备优秀的数学基础和编程能力才能驾驭。
  • 【十一】排序算法
    【十一】排序算法
    排序是程序设计中常做的操作,初学者往往只知道冒泡排序算法,其实还有很多效率更高的排序算法,比如希尔排序、快速排序、基数排序、归并排序等。
  • 【十】表查找解
    【十】表查找解
    查找表又可分为静态查找表和动态查找表。借助静态查找表可引申出顺序查找算法、折半查找算法、分块查找算法等;而记住动态查找表,也可以通过构建二叉排序树、平衡二叉树等实现查找操作。
  • 【九】动态内存管理
    【九】动态内存管理
    动态内存管理机制,主要包含两方面内容,用户申请内存空间时,系统如何分配;用户使用内存空间完成后,系统如何及时回收。
  • 【八】图和图存储结构
    【八】图和图存储结构
    玩转数据结构的图,就必须稳扎稳打,死抠图结构的每一个知识点,每一行代码,只有这样,才有彻底学会图存储结构的可能。
  • 【七】树和树存储结构
    【七】树和树存储结构
    树存储结构中,最常用的还是二叉树,本章就二叉树的存储结构、二叉树的前序、中序、后序以及层次遍历、线索二叉树、哈夫曼树等,详细介绍二叉树。

UGUI是什么?

2447

UGUI是什么?_UGUI框架-游民部落(gamecolg.com)

UGUI(Unity GUI)是 Unity 引擎中用于创建用户界面(UI)的一套系统,它提供了便捷、灵活的方式来构建游戏内各种交互界面,从简单的菜单到复杂的游戏内操作面板等都可以实现。


一、UGUI 的特点

可视化编辑:在 Unity 的编辑器环境中,可以通过直观的操作界面来创建和布置 UI 元素。例如,能直接将按钮、文本框、图像等 UI 组件拖放到场景中的 Canvas(画布,是 UI 元素的容器)上,然后利用编辑器提供的各种工具对它们进行定位、调整大小、设置颜色、字体等属性,就像搭积木一样方便,开发人员可以实时看到 UI 布局的效果,便于快速迭代设计。

易于使用和学习:对于新手开发者来说,UGUI 的组件和使用逻辑相对容易上手。它采用了基于组件的架构,每个 UI 元素(比如按钮 Button、文本 Text 等)都是一个独立的组件,有自己的属性和方法。开发者可以通过代码或者编辑器来方便地操作这些组件,像给按钮添加点击事件响应,只需在编辑器中简单配置或者编写少量代码即可实现。

跨平台兼容性好:Unity 本身支持多平台发布,而 UGUI 作为其内置的 UI 系统,能很好地适配各种平台,包括但不限于 Windows、Mac、iOS、Android、WebGL 等。在不同平台上,UI 元素能够自动根据平台的特性和屏幕分辨率等进行适当的缩放、布局调整等,确保界面呈现出较好的视觉效果和交互性。


二、UGUI 的主要组件

Canvas(画布):所有的 UI 元素都必须放置在画布上,它定义了 UI 布局的基础空间和坐标系。可以把它想象成现实中画画用的画布,UI 组件就是画在这块 “画布” 上的各种图案。画布有不同的渲染模式,比如 “Screen Space - Overlay” 模式下,UI 会直接覆盖在屏幕最上层,不受场景中其他物体的遮挡;“Screen Space - Camera” 模式则通过指定一个摄像机来渲染 UI,能实现一些特殊的视觉效果,比如带有透视效果的 UI 等;还有 “World Space” 模式,UI 会像场景中的普通物体一样存在于三维空间中,可以与场景中的其他物体进行交互等。

Button(按钮):这是最常用的交互组件之一,用户可以通过点击(在移动端也可以是触摸操作)按钮来触发相应的事件。开发者可以设置按钮的外观,比如正常状态、鼠标悬停状态、按下状态的颜色、图片等不同样式,还能为按钮添加点击事件的响应函数,在函数中编写比如打开新界面、执行游戏中的某个操作等逻辑代码。

Text(文本):用于在 UI 上显示文字信息,能设置字体、字号、颜色、对齐方式等属性。例如在游戏的剧情对话界面、得分显示界面等都会大量用到文本组件来向玩家传达各种消息。

Image(图像):可以用来展示图片,比如游戏中的图标、背景图片等。它支持多种图片格式,并且能对图片进行一些简单的处理,像设置透明度、裁剪等操作,还能将其作为其他组件的背景等使用。

Slider(滑块):常用于调节数值,比如游戏中的音量调节、画面亮度调节等功能。玩家可以拖动滑块来改变对应的数值,开发者可以获取滑块的当前值并应用到相应的游戏逻辑中。


三、UGUI 的布局方式

锚点(Anchor)系统:锚点对于 UI 元素的定位和自适应屏幕变化起着关键作用。每个 UI 元素都有锚点,可以将锚点设置在父容器(通常是画布或者其他布局组件)的不同位置,比如左上角、右下角等。当屏幕分辨率改变或者父容器大小改变时,UI 元素会根据锚点的设置来自动调整位置和大小。例如,如果将一个按钮的锚点设置为水平方向左右拉伸、垂直方向居中对齐,那么当屏幕变宽或变窄时,按钮会自动在水平方向上拉伸或收缩,以保持相对合适的布局位置。

布局组件(如 Horizontal Layout Group、Vertical Layout Group 等):这些布局组件可以方便地实现自动布局效果。比如 “Horizontal Layout Group” 能让添加到它下面的 UI 元素自动在水平方向上排列,并且可以设置元素之间的间距、对齐方式等参数;“Vertical Layout Group” 则负责在垂直方向上进行类似的自动布局操作。使用这些布局组件可以快速搭建出整齐、有序的 UI 界面,尤其在动态生成 UI 元素或者需要根据不同情况灵活调整布局时非常有用。


四、代码控制 UGUI

除了在编辑器中进行可视化的操作,开发者还可以通过 C# 脚本代码来对 UGUI 组件进行深度控制。例如:

using UnityEngine;
using UnityEngine.UI;

public class UIScript : MonoBehaviour
{
	public Button myButton;
	public Text myText;

	void Start()
	{
		//给按钮添加点击事件响应
		myButton.onClick.AddListener(() =>
		{
			myText.text = "按钮被点击了";

		});
	}
}


在上述代码示例中,首先引入了 UnityEngine 和 UnityEngine.UI 命名空间,因为 UGUI 相关的类都在这个命名空间下。然后在脚本中定义了一个按钮和一个文本组件的引用,在 Start 函数中,通过给按钮的 onClick 事件添加一个匿名函数的方式,实现了当按钮被点击时,改变文本组件显示内容的功能。


总之,UGUI 为 Unity 开发者提供了一套功能强大、易于上手且灵活多变的 UI 开发解决方案,无论是制作 2D 还是 3D 游戏的 UI 界面,都能发挥重要作用。


特别声明:本文仅供交流学习 , 版权归属原作者,并不代表游民部落赞同其观点和对其真实性负责。若文章无意侵犯到您的知识产权,损害了您的利益,烦请与我们联系vmaya_gz@126.com,我们将在24小时内进行修改或删除。

相关推荐:

游戏项目推荐
  • 【二十八】游戏UI之UI界面管理
    【二十八】游戏UI之UI界面管理
    游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理
  • 【二十七】游戏UI之透视相机模式规划
    【二十七】游戏UI之透视相机模式规划
    游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划
  • 【二十六】游戏UI之正交相机模式规划
    【二十六】游戏UI之正交相机模式规划
    游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面
  • 【二十五】游戏UI之NGUI和UGUI简介
    【二十五】游戏UI之NGUI和UGUI简介
    游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介
  • 【二十四】Lua与C、C++间模块交互
    【二十四】Lua与C、C++间模块交互
    Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互
  • 【二十二】Lua游戏配置内存优化策略
    【二十二】Lua游戏配置内存优化策略
    Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略
  • 【二十三】Lua模块和Unity引擎C#模块间交互
    【二十三】Lua模块和Unity引擎C#模块间交互
    Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互
  • 【二十一】Lua内存开销规划和优化策略
    【二十一】Lua内存开销规划和优化策略
    Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略