UGUI Game界面开发

2024-08-22 09:44
文章标签 开发 界面 ugui game

本文主要是介绍UGUI Game界面开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文参考:第1节 UGUI概述和Canvas组件_哔哩哔哩_bilibili

一、核心要点

1、Canvas画布:
所有的UI控件必须依托于Canvas才能生效。
2、Image组件
(1)pos信息
是相对于父组件的位置
(2)Anchor锚点
按Alt键生效
(3)Image Type
-Simple模式:普通图片显示
-Sliced模式:切片,将图片分为核心和边缘两部分,核心可以缩放,边缘不进行缩放
-Tiled模式:图片正常大小显示,然后调整w/h值会出现剪切、堆叠的效果
-Filled模式:适合做特效的填充模式
3、Button组件
(1)Transition过渡
-Color Tinit方式:颜色变化的效果
-Sprite Swap方式:通过Animator配置图片切换
(2)Inspector中添加事件
(3)代码中添加事件
this.GetComponent<Button>().OnClick.AddListener(func(xx));
4、Toggle组件
单选配置:加到同一个Group中
5、Slider组件
适合做血条
6、ScrollBar组件
当界面的内容大于ScrollRect显示框,需要通过滚动条拖拽一部分一部分的显示
7、EventTrigger组件
对没有交互属性的UI组件,增加注册事件的方法
8、CanvasScaler组件
屏幕适配的组件

二、UGUI概念

UGUI:Unity Graphical User Interface

(1)Canvas画布

所有的UI控件必须依托于Canvas组件才能显示和产生作用,相当于所有UI控件的一个背景板。

创建画布:

创建完Canvas后,就会在Hierarchy中出现Canvas和EventSystem,EventSystem下对应的2个组件就是负责消息的输入、输出等的处理。

(2)3种渲染模式

1)Overlay模式

跟屏幕的大小保持一致。

此模式不需要UI摄像机,永远出现在所有摄像机的最前面。

三、Image组件

(1)pos信息

posX/Y/Z是相对于父组件的相对位置。

(2)Anchor锚点

Anchor的作用:当屏幕分辨率发生变化时,根据anchor计算相对位置。

当anchor位于左上角时,标识当前组件根据左上角的点计算相对位置。

按照Alt键可以使其生效

生效后=》》 

(3)pivot信息

标识组件Image的位置,后续Image的旋转等操作均以该位置进行。

取值范围为:[-1,1]

(4)Image组件信息

将图片拖入Source Image后,通过Set Native Size可以设置图片为原始大小。

Color颜色会和输入图片的颜色进行叠加。

Preserve Aspect选项:当调整了图片的Width和Height之后可能会导致变形,通过该选项可以保持原始图片的比例,从而使图片不变形。

(5)Image Type

有4种图片类型。

1)Simple:普通模式。将Sprite当成普通的图片进行显示。

2)Tiled:堆叠模式。

图片按照正常大小显示,然后按照要求的width、height进行显示。当width/height的值小于原始大小,则会出现剪切的效果;当width/height的值大于原始大小,则会出现多个图片的堆叠效果。

3)Sliced:切片模式。当图片放大时,会出现中间清晰而边缘模糊的情况。

下图就是边缘因为放大而变模糊的场景。

Sliced模式需要将图片区分成核心和边缘两部分,核心部分会进行缩放,而边缘部分不进行缩放。

选择Sliced模式后会有如下报错:

这表示这张图片没有切分出border边缘。

需要点击图片,然后Sprite Mode选择Multiple

点击Sprite Editor,移动绿线(蓝线不能移动)从而把图进行了切分,点击apply生效。

此时再选择Sliced模式就没有报错了,同时放大后边缘还是清晰的。

4)Filled:填充模式。

填充模式非常适合做特效,它需要配合下面的子选项进行使用。

Fill Origin:填充的初始位置。

Fill Amount:填充比例,值的范围是[0,1]

Clockwise:是否顺时针方向

Horizontal:进度条的样式

Vertical:水往上涨的样式

Radial 360:倒计时样式

(6)编程

使用UI组件需要using以下信息:

using UnityEngine.UI;

逐帧填充到1的方法:(1.0F表示1秒钟,coldTime是填充完成的时间)

selflmage. fillAmount + = (1.0F / coldTime * Time. deltaTime) ;l

四、Text组件

(1)字体

使用自己的字体的方法:

创建Font目录,把字体文件拖进去。

然后把字体文件直接拖到Character的Font即可。

在C#中使字体生效。

public Font targetFont; 

然后把新字体拖到TargetFont变量中。

在Start()函数中:

selfText = this.GetComponent<Text>();

selfText.font = targetFont;

(2)Rich Text富文本

在一个文本框中针对不同的文字显示不同的效果,类似html中的文本的操作。

(3)Paragraph段落

Horizontal Overflow:

Wrap:溢出换行

Overflow:直接溢出

Best Fit:字体在Min Size和Max Size之间自动调整

五、Button组件

(1)Transition过渡

Color Tint方式

可以配置不同操作下的颜色变化

Sprite Swap

图片切换的方式。

一般情况下,button我们只会用到图标,不会挂Text子组件。此时操作button时可以进行图标的切换。

Animation方式

配置AnimatorController,然后通过Trigger跳转到不同的Animation。

选择Animation方式后,会自动添加上Animator组件。

点击Auto Generate Animation即可自动创建AnimatorController。

选中Hierarchy中的Button对象,然后选择Window -> Animation组件,即可打开Animation的编辑界面。

在Animation中点击红色圆圈,即打开Enable keyframe recording mode,然后将Scale的x从1.1改回到1,就会记录这一帧作为动画。这样通过record + transform值/Image属性(比如Color)变化,就可以生成帧动画。

编辑完ButtonAnimator后,如果其他Button也想使用这个效果,则直接在其Animator中选择该Animator即可。

(2)Navigation导航

当存在多个按钮时,允许使用键盘上的方向键进行按钮的切换。

选中3个button,然后再选择Horizontal模式后,通过Visualize可以看到3个 button之间的建立了关系。

通过使用方向键,可以看到按钮切换的效果。

选择Automatic模式后,就可以在横向、纵向之间都可以进行切换。

Explicit模式,就可以自定义切换的按钮。

(3)Inspector中添加事件

添加函数

在On Click()中点击"+",然后将对象拖入Object属性中

然后选择组件的自定义的函数,OnClick会扫描所有的组件获取组件对应的函数,选择Image -> SetNatiiveSize()即可将图标变成原始大小。

添加函数参数

当有些函数需要参数时,会根据参数的类型出现参数属性输入框。

添加多个函数

(4)代码中添加事件

最多可传入1个参数。

在Inspector中配置代码中函数

参考示例

配置监听器的方式添加函数

添加无参函数的示例:

添加有参函数的示例:

六、Toggle开关组件

(1)基本使用

Toggle由3部分组成,如下所示:

Toggle的事件函数示例:

Inspector中使用函数:

代码中添加事件的方法:

(2)单选配置

若要若干选项只能单选,只需将这些选项放到一个group里面。

具体做法:

首先,在Hierarchy中创建空物体,比例为ColorGroup

然后,给该物体添加Toggle Group的组件

接着,将所有的Toggle对象的"Group"属性都赋值成ColorGroup

七、Slider组件

原始样式如下:

可以做成血条

编程使用Slider

ps:在Unity中,Color是一个整体的值,必须是Color变量整体赋值,而不能只赋值Color的rgba的一个属性。

八、ScrollBar/ScrollRect组件

(1)ScrollBar基本概念

使用场景:当界面的内容大于显示框,需要通过滚动条拖拽,一部分一部分的浏览内容。

与Slider有点类似。

滚动视图的组件为Scroll Rect组件:

(2)制作小说阅读器

ScrollView为Scroll Rect组件,

ViewPoint为Image组件

NovelText为Text组件,

将NovelText拖到Scroll Rect的Content属性中。

将ScrollBar组件添加到Scroll Rect的Vertical ScrollBar的属性

当给Image组件添加Rect Mask组件后,超出的文字则不再显示。

组件的层次关系如下:

九、DropDown下拉栏组件

本身是由很多组件组合而成的,同时多了一个Dropdown组件。

编程常用函数:

  • 清除下拉选项:selfDropDown.ClearOptions();
  • 添加下拉选项:selfDropDown.AddOptions(colorList);

十、InputField文本输入框组件

该组件有两个事件类型:

On Value Changed(String):当文本输入框的内容发生改变时,执行该方法

On End Edit(String):当文本输入框的内容编辑结束时,执行该方法。按回车键、或者点击文本框外部区域即可结束编辑。

十一、EventTrigger事件触发器

(1)概念

在Hierarchy中创建Panel时,是没有配置交互属性的,需要通过EventTrigger单独配置事件。

比如:Panel中有Image组件,没有其他交互相关的属性,此时添加EventTrigger组件,可以配置事件处理的方法。

EventTrigger的事件方法罗列如下,其中最常用的是PointerXX系列的方法。

(2)在Inspector中添加事件

示例如下:

(3)在代码中注册事件

using UnityEngine.EventSystems;

然后让自定义组件继承IPointerEnterHandler、IPointerExitHandler接口,然后实现该接口对应的方法。

十二、CanvasScaler屏幕适配

假如在400*300的屏幕下,有如下3个100*100的Image组件:

其中红色的位于正中间,蓝色的锚点到右上角,绿色的位于左边缘和红色的之间。

Canvas组件自带Canvas Scaler组件。

UI Scale Mode参数:

  • Constant Pixel Size:固定像素大小。当屏幕分辨率调整到4000*3000,Image还是按照100*100显示。Scale Factor是同时放大的系数,假如值为2,则Image任何分辨率下都变为200*200。

  • Scale With Screen Size:按照屏幕大小缩放。需要配置Reference Resolution的X/Y值,表示设计时参考的分辨率大小。

Screen Match Mode:

Match Width Or Height:表示缩放时参考Width还是Height,下面的Match表示Width/Height的参考权重。

Expand:永远按照Width / Height中较小的比例缩放,使得不会溢出屏幕

Shrink:缩小时选择变化小的那个

这篇关于UGUI Game界面开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095921

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template