Unity UI -- (5)增加基础按钮功能

分析分析一些常见UI

        良好的UI设计会清晰地和用户沟通。用户知道他们能和屏幕上哪些东西交互,哪些不能。如果他们进行了交互,他们也要清楚地知道交互是否成功。换句话说,UI要提供给用户很多反馈。

        我们可以来看看在Unity里或者在计算机上的任何应用程序:

  •         将鼠标悬停在一个按钮上,会发生什么?
  •         选择一个按钮会发生什么?
  •         当一个物体被选中,你是怎么知道它被选中的?

        下面是一些实例:

        当鼠标悬停在Google Docs里的Edit按钮时,按钮底色会加深,让其更加显目。当然在某些应用中,改变的是文字的颜色而不是背景色。一般来说,如果按钮是浅色的,则通常在悬停时会让它的颜色变深色以便对比突出。 

        如果按钮本身是深色的,则通常会让其变成浅色。

         当我们点击或选中了一个按钮,它会再次变色,通常会是一个更加醒目的颜色。

         我们可以尝试观察一下电脑上的其他应用程序的UI的相关变化。

编辑按钮的颜色转换

        Unity允许我们控制按钮的颜色反馈,以便更好地和用户沟通。

        1. 保持Settings Button游戏物体处于选中状态,在Button组件中定位到Transition属性。这个属性默认值应该是Color Tint。

            当使用Color Tint时,当用户和按钮交互时,按钮的颜色可以发生变化。我们也可以使用Sprite Swap在进行交互时改变按钮所使用的的图片,或者使用Animation选项播放自定义的按钮动画。

            下图展示了Color Tint方式的默认颜色配置:

                Normal Color:纯白。表示按钮在普通状态下的颜色。

                Highlighted Color: 对比Normal Color,只有一点点灰(具体数值可以点击颜色条查看)。当用户悬停在按钮上时的颜色。

                Pressed Color:更加醒目的灰色。用户按住按钮时的颜色(比如鼠标按下不放)。

                Selected Color:和Highlighted Color一样的颜色。当用户点击了按钮后的颜色,如果用户再次点击了其它按钮或屏幕的空白处,则按钮会恢复到Normal Color。本案例中这个颜色没有什么作用,因为后面我们实现的功能是当设置按钮被点击后,按钮会隐藏。

                Disabled Color:深灰色。当按钮被禁用时的颜色。本案例中不涉及这种颜色的使用。

                Color Multiplier:增加按钮上颜色色调的效果。如果我们有一个深色按钮或半透明按钮,这个属性会比较有帮助。

        2. 运行场景,和设置按钮进行交互看看效果。

            在Play模式中,可以尝试去改改这些颜色,看看效果。

增加On Click事件的action

        接下来我们让应用能响应用户的点击。本案例中,用户可以通过点击设置按钮进入设置菜单界面。

        当用户点击了设置按钮时,设置菜单会出现。

        当用户点击了设置菜单里的退出按钮时,会返回标题界面。

        首先我们来完成点击设置按钮,进入设置菜单的功能。

        1. 在Hierarchy中,激活Title Text和Settings Button游戏物体,关闭Settings Menu游戏物体(可以右键点击此物体选择Toggle Active state,也可以选中游戏物体后在Inspector中的勾选或去勾选最上面的复选框)。

            现在设置菜单会被隐藏掉。

        2. 选择Settings Button,在Button组件中定位到On Click()部分。 

            在On Click框中,我们会看到“List is Empty"。这意味着当按钮被选择时(点击),不会发生任何事情。

            On Click是一个UnityEvent。UnityEvents可以在特定事件发生时,触发任意数量的动作。在本案例中,“Event”是指按钮的点击。

        3. 选择“+”按钮,添加一个新的动作。

            默认情况下,action是空的。

在设置按钮被点击时让设置菜单出现

        为一个UnityEvent选择一个功能有两步:

                1. 选择我们要执行功能的物体。

                2. 从这个物体中选择一个我们想要执行的功能。

        默认情况下,Object字段没有赋值,显示的是None(Object)。由于我们想要的是设置菜单出现,因此我们要将它赋值到这里。

        1. 在Hierarchy中,点击并拖拽Settins Menu游戏物体到前面说的空Object字段。

            我们会看到No Funtion下拉菜单现在会可用。No Funtion意味着还没有从这个物体中选任何功能。我们现在要选择我们希望在按钮点击事件发生时,要使用Settings Menu的哪个功能(也叫函数,方法,动作)。

        2. 在No Funtion处的下拉菜单中选择GameObject > SetActive(bool)。当我们在这个菜单中进行查看时,实际是浏览了在这个物体上关联的脚本中的可用的功能方法。

            选择了GameObject > SetActive(bool)之后,意思是当按钮被点击时,执行GameObject脚本里的SetAvctive函数。

            现在我们会注意到,在Settings Menu物体右边会出现一个小的复选框。

            由于我们所选择的SetAcive(boiol)函数,需要一个布尔值作为输入参数,因此这里的复选框就表示了这个布尔值。由于我们想要设置菜单变为Active,因此这个布尔值应该为true。

        3. 将这个复选框勾选上,表示我们会传递true到SetAcive()函数,让设置菜单变为Active。

         运行场景看看,当我们点击设置按钮时,设置菜单会出现,但设置菜单可能会覆盖在标题上面(取决于你自己所定义的设置菜单位置和大小)。我们想要的效果是进入设置菜单后标题和设置按钮就不显示了。

让标题和设置按钮消失

        当我们点击设置按钮时,我们同时希望标题和设置按钮也消失。这可以通过和上一小节中的类似的方法实现。添加两个On Click的功能函数,分别选择Settings Button和Title Text物体,并且这次将SetActive的参数设置为false即可。

挑战:导航回标题界面

        挑战一下,实现从设置菜单点击退出按钮后返回标题界面的功能。返回标题界面后,需要重新显示标题和设置按钮。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】树和二叉树和基本介绍、树的基本术语和表示、二叉树的性质和储存结构

文章目录 1.树的基本概念和介绍1.1树的概念1.2树的基本术语1.3树的使用1.4树的表示1.4.1图形表示1.4.2代码表示 2.二叉树的基本概念和介绍2.1二叉树的介绍2.2二叉树的性质2.3二叉树的储存结构2.3.1顺序储存结构2.3.2链式存储结构 1.树的基本概念和介绍 1.1树的概念 在以前的学…

关于Markdown文件的处理【笔记】

关于Markdown文件的处理【笔记】 前言推荐关于Markdown文件的处理一、md文件转word文档1 准备2 打开3 转为word文档4 导出结果5 打开 二、word文档转md文件1 准备2 导入3 打开4 显示图片5 打开 三、导入到CSDN中1 选择导入2 查看 四、导入设置1 前言2 导入设置3 修改配置 最后 …

C++中map的用法

博主简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的人。 博主主页:陈童学哦 所属专栏:CSTL 前言:Hello各位小伙伴们好!欢迎来到本专栏CSTL的学习,本专栏旨在帮助大家了解…

【分享】ChatGPT的key,用key免费使用ChatGPT(每天更新)

1、ChatGPT用法总结: 自动化文本生成:可以用GPT生成文章、新闻、文本摘要,甚至小说、诗歌等文学作品。语音生成:结合语音合成技术,GPT可以生成自然流畅的语音,可以用于语音助手、交互式语音应用等。问答系统…

深度学习笔记之递归网络(五)递归神经网络的反向传播过程

机器学习笔记之递归网络——递归神经网络的反向传播过程 引言回顾:递归神经网络的前馈计算过程场景构建前馈计算描述 反向传播过程各参数的梯度计算各时刻损失函数梯度计算损失函数对各时刻神经元输出的梯度计算 Softmax \text{Softmax} Softmax回归的梯度计算关于 …

学习git

文章目录 02-为什么要学习Git软件?03 概念:版本控制04 概念:版本控制软件基础功能05 概念:集中式、分布式版本控制系统、多人协作开发5.1 文件冲突问题5.2集中式版本控制(CVS,SVN)5.3 分布式版本…

【KVM虚拟化】· virsh管理命令

目录 🍁libvirt架构概述 🍁使用virsh管理虚拟机 🍂常用命令总结 🍁kvm基本功能管理 🍂帮助命令 🍂KVM的配置文件存放目录 🍂查看虚拟机状态 🍂虚拟机关机与开机 🍂强制虚…

使用FFMPEG进行音频重采样

准备 1. ffmpeg 4.4 2. sdl2 3.一段原始的音频PCM数据 重采样流程 1.设置输入音频参数和输出音频参数 2.根据设置的参数初始化SwrContent上下文 3.创建一个输入buffer, 根据输入的音频参数(采样率,通道数,样本位深度)申请空间…

数据库sql语句-----游标和存储过程

关键词: create procedure xxx()as.......go 查询: exec ... 从例子中感悟一下: create table cartoon( linenum int, name varchar(50) not null, line varchar(100) not null )insert into cartoon values(1,灰太…

Linux文件与目录管理笔记1

鸟哥私房菜笔记 这里写目录标题 常用文件命令cd,pwd,mkdir,rmdir 执行文件的路径的变量:$PATHls,cp,rm,mv 文件内容查看指令(cat,tac,nl)可翻页查看(more,less)More(一页一页翻动)less 数据截取(head,tail)非纯文本文件:od 常用文件命令 cd…

信创办公–基于WPS的PPT最佳实践系列 (插入表格或图标)

信创办公–基于WPS的PPT最佳实践系列 (插入图表或图标) 目录 项目背景操作步骤1、插入表格2、实现放映功能 项目背景 当表格数据过大时,将其复制粘贴到PPT上时会显得插入的表格内容小、拥挤,使PPT看起来不美观。这个问题我们可以…

关于多线程

概念 进程:正在运行的程序,不仅指处于执行期的程序本身,还包括它所管理的资源,比如由它打开的窗口,地址的资源,进程状态等等 线程:CPU调度和分派的基本单位 进程好比工厂的车间,它…

[组合数学] 排列组合

文章目录 加法法则 --每一类都能够独立的完成任务乘法法则 --集合论 任务分步骤1000和9999之间有多个具有不同数位的奇数n 7 3 1 1 2 1 3 4 ^311^213^4 3112134 求除尽n的整数个数0到10000之间有多少个整数恰好是有一位数字是5两位数字可以组成多少两位互异且非零的两位数 减…

Flutter音乐播放audioplayers

简介 Flutter的audioplayers是一个Flutter插件,可以播放多个同时的音频文件,支持Android、iOS、Linux、macOS、Windows和web平台。它有以下特点: 可以从本地文件、网络资源或内存中加载音频可以控制音量、进度、速度和循环可以播放多个音频…

pg事务:隔离级别历史与SSI

事务隔离级别的历史 ANSI SQL-92定义的隔离级别和异常现象确实对数据库行业影响深远,甚至30年后的今天,绝大部分工程师对事务隔离级别的概念还停留在此,甚至很多真实的数据库隔离级别实现也停留在此。但后ANSI92时代对事物隔离有许多讨论甚至…

Everypixel: AI图片搜索引擎

【产品介绍】 Everypixel是一个基于人工智能的图片搜索引擎。可以搜索超过 50 个图片来源的优质的授权图库版权素材图片,还可以使用免费图案功能,找到适合自己需求的可定制无缝图案。 Everypixel利用深度学习和计算机视觉技术,为客户提供先进…

黑客入门指南,学习黑客必须掌握的技术

黑客一词,原指热心于计算机技术,水平高超的电脑专家,尤其是程序设计人员。是一个喜欢用智力通过创造性方法来挑战脑力极限的人,特别是他们所感兴趣的领域,例如电脑编程等等。 提起黑客,总是那么神秘莫测。…

VONR排查指导分享

不能注册或呼叫到SIP服务器端30秒挂断呼叫的黄金法则咬线或摘机状态单通或无语音收到400 bad request收到413,513 Request Entity Too Large或Message Too Large消息收到408, 480或者487 消息483 - Too Many Hops488 – Not Acceptable Here语音质量和思…

iptables 防火墙(一)

目录 一:iptables概述 二:netfilter/iptables关系 三:四表五链 1.规则表和规则链的作用 2. 四表 3.五链 ​4.规则链之间的匹配顺序 (1)主机型防火墙 (2)网络型防火墙 5.规则链内的匹配…

【JVM】5. 本地方法接口和本地方法栈

文章目录 5.1. 什么是本地方法?5.2. 为什么使用Native Method?5.3. 本地方法栈 5.1. 什么是本地方法? 简单地讲,一个Native Method是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现…