Unity UGUI4——组合控件

news2024/9/21 22:49:57

一、Button

​ Button 是按钮组件,是 UGUI 中用于处理玩家按钮相关交互的关键组件

​ 默认创建的 Button由 2 个对象组成
​ 父对象——Button 组件依附对象,同时挂载了一个 Image 组件作为按钮背景图
​ 子对象——按钮文本 Text(可选)

(一)参数介绍

  1. Interactable:是否接收输入

    若不勾选,则表示被禁用,对应显示为 Disable

  2. Transition:响应用户输入的过渡效果

    • None:没有状态变化效果

    • Color Tint:用颜色表示不同状态的变化

      • TargetGraphic:控制的目标图形
      • Normal Color:正常状态的颜色
      • Highlighted Color:鼠标进入时的高亮颜色
      • Pressed Color:按下时的颜色
      • Selected Color:选中时的颜色
      • Disable Color:禁用时的颜色
      • Color Multiplier:颜色倍增器,过渡颜色乘以该值,一般不改变
      • FadeDuration:衰减持续时间,从一个状态进入另一个状态时需要的时间
    • Sprite Swap:用图片表示不同状态的变化

      • Normal Sprite:正常状态的图片
      • Highlighted Sprite:鼠标进入时的图片
      • Pressed Sprite:按下时的图片
      • Selected Sprite:选中时的图片
      • DisableSprite:禁用时的图片
    • Animation:用动画表示不同状态的变化

      • Normal Trigger:正常动画触发器
      • Highlighted Trigger:鼠标进入状态时的触发器
      • Pressed Trigger:按下时触发器
      • Selected Trigger:选中时触发器
      • DisableTrigger:禁用时触发器
      • Auto Generate Animation:Unity 将自动生成一系列触发器,减少我们的操作步骤
  3. Navigation:导航模式,可以设置 UI 元素如何在播放模式中控制器导航

    • None:无键盘导航
    • Horizontal:水平导航
    • Vertical:垂直导航
    • Automatic:自动导航
    • Explicit:指定周边控件进行导航
    • Visualize:Scene 场景中显示导航

  1. Onclick:单击(按下再抬起)执行的函数列表

(二)代码控制

Button btn = this.GetComponent<Button>();
btn.interactable = true;
btn.transition   = Selectable.Transition.None;

Image img = this.GetComponent<Image>();

(三)监听点击事件的两种方式

​ 点击事件是在按钮区域抬起按下一次,就算一次点击

  1. 拖 GameObject

    注意,只能关联对象的 public 函数

  2. 代码添加

btn.onClick.AddListener(ClickBtn);
btn.onClick.AddListener(() => { print("123123123"); });

btn.onClick.RemoveListener(ClickBtn);
btn.onClick.RemoveAllListeners();

二、Toggle

​ Toggle 是开关组件,是 UGUI 中用于处理玩家单选框、多选框相关交互的关键组件,默认是多选框

​ 可以通过配合 ToggleGroup 组件制作为单选框

​ 默认创建的 Toggle 由 4 个对象组成
​ 父对象——Toggle 组件依附
​ 子对象——背景图 Background(必备)、选中图 Checkmark(必备)、说明文字 Label(可选)

(一)参数介绍

  1. Interactable:是否接收输入

    若不勾选,则表示被禁用,对应显示为 Disable

  2. Transition:同 Button 组件

  3. Navigation:同 Button 组件

  4. Is On:当前是否处于打开状态

  5. Toggle Transition:在开关变化时的过渡方式

    • None:无任何过渡,直接显示隐藏
    • Fade:淡入淡出
  6. Graphic:用于表示选中状态的图片

  7. Group:单选框分组

    • Allow Switch Off:是否允许不选中任何一个单选框
  8. OnValueChanged:开关状态变化时执行的函数列表

(二)代码示例

Toggle tog = this.GetComponent<Toggle>();
tog.isOn = true;
print(tog.isOn);

ToggleGroup togGroup = this.GetComponent<ToggleGroup>();
togGroup.allowSwitchOff = false;

// 可以遍历提供的迭代器 得到当前处于选中状态的 Toggle
foreach (Toggle item in togGroup.ActiveToggles())
{
    print(item.name + " " + item.isOn);
}

(三)监听点击事件的两种方式

  1. 拖 GameObject
  2. 代码添加
tog.onValueChanged.AddListener(ChangeValue);
tog.onValueChanged.AddListener((b) => { print("代码监听 状态改变" + b); });

public void ChangValue(bool isOn)
{
    print("状态改变" + isOn);
}    

三、InputField

​ InputField 是输入字段组件,是 UGUI 中用于处理玩家文本输入相关交互的关键组件

​ 默认创建的 InputField 由 3 个对象组成
​ 父对象——InputField 组件依附对象,以及同时在其上挂载了一个 Image 作为背景图
​ 子对象——文本显示组件 Text(必备)、默认显示文本组件Placeholder(必备)

(一)参数介绍

  1. Interactable:是否接收输入

    若不勾选,则表示被禁用,对应显示为 Disable

  2. Transition:同 Button 组件

  3. Navigation:同 Button 组件

  4. TextComponent:用于关联显示输入内容的文本组件

  5. Text:输入框的起始默认值

  6. Character Limit:可以输入字符长度的最大值

  7. Content Type:输入的字符类型限制

    • Standard:标准模式,可以输入任何字符

    • Autocorrected:自动更正模式,跟踪未知单词,向用户建议合适的替换候选词

    • Integer Number:整数模式,用户只能输入整数

    • Decimal Number:十进制数模式,用户只能输入数组,包括小数

    • Alphanumeric:字母数字模式,只能输入字母或数字

    • Name:名字模式,自动将每个单词首字母大写

    • Email Address:邮箱地址模式,最多允许输入一个 @ 符号组成的字符和数字字串

    • Password:密码模式,用星星隐藏输入的字符,允许使用符号

    • Pin:别针模式,用星星隐藏输入的字符,只允许输入整数

    • Custom:自定义模式,允许自定义行类型,输入类型,键盘类型和字符验证

  8. Line Type:行类型,用于定义文本格式

    • Single Line:只允许单行显示

    • Multi Line Submit:允许使用多行,仅在需要时使用行的一行

    • Multi Line NewLine:允许使用多行,用户可以按回车键空行

  9. Placeholder:关联用于显示初始内容的文本控件

  10. Caret Blink Rate:光标闪烁速率

  11. Caret Width:光标宽度

  12. Custom Caret Color:自定义光标颜色

  13. Selection Color:批量选中的背景颜色

  14. Hide Mobile Input:隐藏移动设备屏幕上的键盘,仅适用于 IOS

  15. Read Only:只读,不可修改

(二)代码示例

InputField input = this.GetComponent<InputField>();
print(input.text);
input.text = "123123123123";

(三)监听点击事件的两种方式

  1. 拖 GameObject
  2. 代码添加
// 改变输入
input.onValueChanged.AddListener(ChangeInput);

// 结束输入
// 按 Enter 或鼠标点击别处都算结束输入
input.onEndEdit.AddListener((str) => { print("代码监听 结束输入" + str); });

public void ChangeInput(string str)
{
    print("改变的输入内容" + str);
}

四、Slider

​ Slider 是滑动条组件,是 UGUI 中用于处理滑动条相关交互的关键组件

​ 默认创建的 Slider 由 4 组对象组成
​ 父对象——Slider 组件依附的对象
​ 子对象——背景图 Background、进度图 Fill 、滑动块 Handle 三组对象

(一)参数介绍

  1. Interactable:是否接收输入

    若不勾选,则表示被禁用,对应显示为 Disable

  2. Transition:同 Button 组件

  3. Navigation:同 Button 组件

  4. Fill Rect:用于填充的进度条图形

  5. Handle Rect:用于滑动的滑块图形

  6. Direction:滑动条值增加的方向

    • Left To Right:从左到右
    • Right To Left:从右到左
    • Bottom To Top:从下到上
    • Top To Bottom:从上到下
  7. Min / Max Value:最大值和最小值

  8. Whole Numbers:是否约束为整数值变化

  9. Value:当前滑动条代表的数值

  10. OnValueChanged:滑动条值改变时执行的函数列表

(二)代码示例

Slider s = this.GetComponent<Slider>();
print(s.value);

(三)监听点击事件的两种方式

  1. 拖 GameObject
  2. 代码添加
s.onValueChanged.AddListener((v) => { print("代码添加的监听" + v); });

五、ScrollBar

​ Scrollbar 是滚动条组件,是 UGUI 中用于处理滚动条相关交互的关键组件

​ 默认创建的 Scrollba r由 2 组对象组成
​ 父对象——Scrollbar 组件依附的对象
​ 子对象——滚动块对象 Handle

​ 一般情况下我们不会单独使用滚动条 ,都是配合 ScrollView 滚动视图来使用

(一)参数介绍

  1. Interactable:是否接收输入

    若不勾选,则表示被禁用,对应显示为 Disable

  2. Transition:同 Button 组件

  3. Navigation:同 Button 组件

  4. Handle Rect:关联滚动块图形对象

  5. Direction:滑动条值增加的方向

    • Left To Right:从左到右
    • Right To Left:从右到左
    • Bottom To Top:从下到上
    • Top To Bottom:从上到下
  6. Value:滚动条初始位置值(0 ~ 1)

  7. Size:滚动块在条中的比例大小(0 ~ 1)

  8. Number Of Steps:允许可以滚动多少次(不同滚动位置的数量)

  9. OnValueChanged:滚动条值改变时执行的函数列表

(二)代码示例

Scrollbar sb = this.GetComponent<Scrollbar>();
print(sb.value);
print(sb.size);

(三)监听点击事件的两种方式

  1. 拖 GameObject
  2. 代码添加
sb.onValueChanged.AddListener(ChangeValue);

public void ChangeValue(float v)
{
    print(v);
}

六、ScrollView

​ ScrollRect 是滚动视图组件,是 UGUI 中用于处理滚动视图相关交互的关键组件

​ 默认创建的 ScrollRect 由 4 组对象组成
​ 父对象——ScrollRect 组件依附的对象,还有一个 Image 组件作为背景图
​ 子对象:

  • Viewport 控制滚动视图可视范围和内容显示
  • Scrollbar Horizontal 水平滚动条
  • Scrollbar Vertical 垂直滚动条

(二)参数介绍

  1. Content:控制滚动视图显示内容的父对象

    Content 的尺寸有多大,滚动视图就能拖到多远

  2. Horizontal:启用水平滚动

  3. Vertical:启用垂直滚动

  4. Movement Type:滚动视图元素的运动类型

    主要控制拖动时的反馈效果

    • Unrestricted:不受限制,随便拖动(一般不用)
    • Elastic:回弹效果,当滚出边缘后,会弹回边界(常用)
      • Elasticity:回弹系数。值越大回弹越慢
    • Clamped:夹紧效果,始终限制在范围内,没有回弹效果
  5. Inertia:移动惯性

    如果开启,松开鼠标后会有一定的移动惯性

    • Deceleration Rate:减速率

      0 没有惯性,1 不会停止

  6. Scroll Sensitivity:滚轮(鼠标中键)和触摸板(笔记本)的滚动敏感性

  7. Viewport:关联滚动视图内容视口对象

  8. Horizontal / Vertical Scrollbar:关联水平 / 垂直滚动条,可删除

    • Visibility:可见模式
      • Permanent:一直显示滚动条(使用较少)
      • Auto Hide:自动隐藏滚动条
      • Auto Hide And Expand Viewport:自动隐藏滚动条并且自动拓展内容视口 Viewport
    • Spacing:滚动条和视口之间的间隔空间
  9. OnValueChanged:滚动视图位置时执行的函数列表

(二)代码示例

ScrollRect sr = this.GetComponent<ScrollRect>();

// 改变内容的大小 具体可以拖动多少 都是根据它的尺寸来的
sr.content.sizeDelta = new Vector2(200, 200);

// 改变显示的位置
sr.normalizedPosition = new Vector2(0, 0.5f);

(三)监听点击事件的两种方式

  1. 拖 GameObject
  2. 代码添加
// 很少使用
sr.onValueChanged.AddListener((vec) => { print(vec); });	

七、Dropdown

​ DropDown 是下拉列表(下拉选单)组件,是 UGUI 中用于处理下拉列表相关交互的关键组件

​ 默认创建的 DropDown 由 4 组对象组成
​ 父对象——DropDown 组件依附的对象 还有一个 Image 组件 作为背景图

​ 子对象:

  • Label 是当前选项描述
  • Arrow 右侧小箭头
  • Template 下拉列表选单

(一)参数介绍

  1. Interactable:是否接收输入

    若不勾选,则表示被禁用,对应显示为 Disable

  2. Transition:同 Button 组件

  3. Navigation:同 Button 组件

  4. Template:关联下拉列表对象

  5. Caption Text:关联显示当前选择内容的文本组件

  6. Caption Image:关联显示当前选择内容的图片组件

  7. Item Text:关联下拉列表选项用的文本控件

  8. Item Image:关联下拉列表选项用的图片控件

  9. Value:当前所选选项的索引值

  10. Alpha Fada Speed:下拉列表窗口淡入淡出的速度

    0 瞬间显示下拉列表,1 慢慢显示下拉列表

  11. Options:存在的选项列表

(二)代码示例

Dropdown dd = this.GetComponent<Dropdown>();

print(dd.value);

print(dd.options[dd.value].text);

dd.options.Add(new Dropdown.OptionData("123123123"));

(三)监听点击事件的两种方式

  1. 拖 GameObject
  2. 代码添加
 s.onValueChanged.AddListener((index) => { print(index); });

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

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

相关文章

【探索 Kubernetes|作业管理篇 系列 11】控制器核心功能

前言 大家好&#xff0c;我是秋意零。 上一篇结束了 Pod 对象的内容。 今天要探讨的内容是 “控制器”&#xff0c;它是 Kubernetes 编排最核心的功能。理解了 “控制器”&#xff0c;你就能理解 Deployment、StatefulSet、DaemontSet、Job、CroJob 控制器对象。 最近搞了一…

Windows 安装 Podman Desktop

Windows 安装 Podman Desktop podman 简介概述和范围Roadmap 路线图Rootless 无根 podman 安装说明Podman for Windows前置条件安装 podman自动 WSL 安装机器初始化过程启动 machine Rootful & Rootless安装 podman desktop podman 命令介绍podman -hpodman machine -h 参考…

2023最新最全!蓝队护网初级面试题大合集!必看!

前言 1.先来个自我介绍 答&#xff1a;本人从事网络安全工作10年&#xff0c;曾在2个大厂工作过&#xff0c;安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过&#xff0c;对这个行业了解比较全面。 随着网络安全被列为国家安全战略的一部分&#xff0c…

deepstream指北——安装配置篇

目录 一、机器配置二、安装教程1. 软件对应版本要求2. 安装 三、运行示例 参考博客&#xff1a;https://blog.csdn.net/m0_73702795/article/details/127940733 &#xff08;ps: deepstream的参考资料太少了-_-||&#xff0c;上面这个是我见过最详细的&#xff09; 一、机器配…

SDN是什么?详解软件定义网络技术原理与应用

目录 一、引言 二、SDN原理 三、SDN优势 四、SDN应用前景 五、最后的话 一、引言 SDN&#xff0c;即Software-Defined Networking&#xff0c;即软件定义网络技术&#xff0c;是近年来新兴的网络技术&#xff0c;其主要思想是将网络的控制平面和数据平面进行分离&#xff…

阿里巴巴最新出版的 Java 面试参考指南(泰山版)开源了!

谈到 Java 面试&#xff0c;相信大家第一时间脑子里想到的词肯定是金三银四&#xff0c;金九银十。好像大家的潜意识里做 Java 开发的都得在这个时候才能出去面试&#xff0c;跳槽成功率才高&#xff01;但 LZ 不这么认为&#xff0c;LZ 觉得我们做技术的一生中会遇到很多大大小…

html 前端笔记常用样式和方法

目录 textarea宽高固定 Js获取文本框中鼠标选中文本 Js设置鼠标选中文本 Js追加/清空表格 自定义CheckBox 颜色 多选框选中和反选操作多次后attr()不生效 JS转Json 选择器 textarea宽高固定 style"resize: vertical" resize: vertical 宽固定none 宽高固定bo…

Windows系统如何将frp或其他应用配置为service服务并开机自启?

本文使用WinSW实现service服务配置 WinSW&#xff08;Windows Service Wrapper&#xff09;是一个开源的 Windows 服务包装器&#xff0c;它可以将任何可执行文件&#xff08;如 Java 应用程序、Python 脚本、Ruby 脚本等&#xff09;转换为 Windows 服务&#xff0c;并为其提供…

绩点计算 - C/C++ 语法基础

某大学的GPA(绩点)计算规则如下&#xff1a; 课程百分制成绩90分对应绩点4.0&#xff0c;超过90分的&#xff0c;按90分计&#xff1b;如不足90分&#xff0c;则课程绩点 4.0 * 分数/90。 学生综合绩点按该生已修的各门课程绩点结合学分加权平均而得。 现有步步同学入学后的已…

关于VPN的一些总结和理解

关于VPN的一些总结和理解 前言一、VPN的概述二、VPN的原理2.1 原理概述2.2 虚拟网卡2.3 点对点隧道的建立 三、其他3.1 vpn和vlan的区别&#xff1f;3.2 vpn和web代理的关系&#xff1f; 参考 前言 同样的机缘巧合&#xff0c;最近看了一些关于vpn的内容&#xff0c;总结一下&a…

NVM安装使用

电脑重装了系统&#xff0c;需要重新安装软件应用&#xff0c;顺便记录一下安装过程。 NVM是一个Node的版本管理工具&#xff0c;通过NVM可以方便的切换Node的版本 安装 下载&#xff0c;去github下载 Releases coreybutler/nvm-windows 运行安装程序 使用 接下来使用…

局域网内海量文件快速复制方法

遇到的问题&#xff1a;最近需要不同磁盘和服务器间大文件&#xff08;一个文件夹几十 T&#xff0c;里面有很多小文件&#xff09;的快速复制&#xff0c;直接通过默认复制卡死。 解决方法&#xff1a;FastCopy&#xff0c;官网&#xff1a;FastCopy &#xff0c;测试速度能能…

vue2旧项目 极速打包实践

背景 公司项目的体量较大&#xff0c;每次serve需要1分钟左右&#xff0c;build需要3分多钟&#xff0c;这是在电脑资源空闲时的速度&#xff0c;如果浏览器开了10几个标签啥的&#xff0c;更慢了。每次改点东西打包发测试环境都很难受。 项目技术栈 // package.json{"d…

百万粉丝都在看的Python上手教程----滚雪球学Python

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天为大家带来一本书&#xff1a;《滚雪球学Python》 一起来看看吧~ 《滚雪球学Python》之所以这样命名本书&#xff0c;是希望大家用滚雪球的思维学习编程语言&#xff0c;“滚”的第一遍&#xff0c;从全局掌握Python技…

大话Stable-Diffusion-Webui-动手开发一个简单的stable-diffusion-webui(三)

文章目录 原理文生图API组件的输入TypeScript响应式数据文生图API调用Axios安装使用配置代理文生图API调用调用结果处理图片渲染安装swiper代码仓库原理 上一篇内容中,我们已经将文生图功能的整体UI界面设计好了,这一篇内容将通过调用sd的API,使得我们设计的UI与sd进行联动…

多域名实现单点登录详解

Hi I’m Shendi 多域名实现单点登录详解 简介 在很久以前给自己的网站制作了登录系统&#xff0c;但因为个人备案等原因没有需要用到登录的地方&#xff0c;于是就没有特意去完善这部分功能&#xff0c;仅仅是将用户部分抽取出来作为一个微服务 最近编写一个转换工具&#xf…

unittest教程__认识unittest(1)

unittest是python内置的单元测试框架&#xff0c;具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件。 使用unittest前需要了解该框架的五个概念: 即test case&#xff0c;test suite&#xff0c;test loader&#xff0c;test runner&#xff0c;test fixture。 …

【多线程】锁策略、CAS、Synchronized

目录 常见的锁策略 乐观锁 vs 悲观锁 悲观锁: 乐观锁&#xff1a; 读写锁 重量级锁 vs 轻量级锁 自旋锁&#xff08;Spin Lock&#xff09; 公平锁 vs 非公平锁 可重入锁 vs 不可重入锁 CAS 什么是 CAS CAS 是怎么实现的 CAS 有哪些应用 1) 实现原子类 2) 实现自…

从0到1使用NodeJS编写后端接口的实战案例(仅供参考)

目录 一、项目简介 1、使用技术 2、实现的主要功能 3、项目结构 二、开发环境准备 1、安装node.js 2、安装 MYSQL 数据库 3、安装 node.js 的 mysql 驱动 4、安装 Express 框架 5、Node 格式化时间模块Silly-datetime 6、安装 nodemon 三、后端代码 1、入口文件 —…

帝国cms城市分站系统开发:首页友情链接和分站友情链接分开调用

第一步&#xff1a;phome_enewslink 增加myarea字段 字段类型&#xff1a;int&#xff0c;长度6&#xff0c;非null字段&#xff0c;默认值0 或者在帝国cms后台执行 sql语句&#xff1a; alter table [!db.pre!]enewslink add myarea int(6) not null; 第二步&#xff1a;修…