第四十章 Unity 按钮 (Button) UI

news2025/2/24 11:06:14

本章节我们介绍一下按钮UI。首先,我们创建一个新的场景“SampleScene3.unity”。然后,在菜单栏中点击“GameObject”->“UI”->“Button”,截图如下

我们选中刚刚创建的Button,然后查看它的Inspector检视面板,如下所示

我们发现Button UI元素即拥有Image组件,还拥有自己的Button组件。也就是说,我们可以给当前的按钮添加一张图片作为背景,事实上我们在现实开发中也经常这样做。这里,我们准备了一张按钮的背景图片(button.png),如下所示

我们把图片(button.png)的类型改成“Sprite(2D and UI)”精灵,然后拖拽到Image组件的Source Image选项中去,如下所示

这里,我们点击“Set Native Size”按钮,让Button去适应图片的尺寸,效果如下

如何修改Button的文字呢?我们查看层次面板发现,Button下面有一个Text

他们是父子关系,想要修改Button的文字内容,就可以修改Text里面的内容即可

我们修改了文字内容,字号大小,以及字体颜色,效果如下

接下来,我们就介绍它独有的Button组件的各个属性

我们逐一介绍上面的内容

Interactable按钮是可以接受点击事件,默认勾选即可。

Transition按钮点击效果,默认是Color Tint,也就是按钮的颜色改变。当然还有其他方式,他们分别是None(不做任何变动)、Color Tint(颜色改变) 、Sprite Swap(图片切换) 、Animation(执行动画)。这四种过渡方式其实就是当你点击按钮前、按下按钮时、离开按钮后按钮的一种变换过程而已。

Target Graphic 就是按钮使用的图片源。

Normal Color 就是按钮默认状态的颜色。

Highlighted Color 就是按钮高亮颜色。

Pressed Color 就是按钮按下时的颜色

Selected Color 就是按钮选中时候的颜色

Disable Color 就是按钮失效时候的颜色

Color Multiplier 则是颜色乘数值,默认1即可。

Fade Duration 则是按钮颜色切换的时间(单位秒)。

接下来,就是Navigation和Visualize用来设置UI元素的导航。在EventSystem中,存在一个当前被选中按钮,我们可以通过代码按下的上下左右,使被选中按钮进行更改。Automatic(自动导航):自动识别最近的一个控件并导航到下一个控件。None(关闭):关闭导航。Horizontal(水平导航):水平方向导航到下一个控件。Vertical(垂直导航):垂直方向导航到下一个控件。Explicit(指定导航):特别指定在按下特定方向键时从此按钮导航到哪一个控件。关于这个,我们就不详细介绍了。

接下来就是重点了,也就是我们的On Click() 列表。很多情况下,我们是希望点击按钮(发生点击事件)后执行一段逻辑代码(响应点击事件),那么我们应该如何操作呢?我们首先创建一个“ClickEventScript.cs”的脚本文件,代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ClickEventScript : MonoBehaviour
{
    public void testClick()
    {
        Debug.Log("点击了!");
    }
}

我们删除了Start和Update两个方法,同时添加了一个普通的“testClick”方法。然后,我们将这个脚本文件附加到“Main Carmera”游戏对象上面。

接下来,我们回到Button组件下的“On Click()”,如下所示

我们点击右下角的“+”号来添加“Main Carmera”游戏对象。

将“Main Carmera”从Hierarchy层次面板中拖拽到上面的“None (Object)”中。

然后,我们点击“No Function”选择我们刚刚创建的脚本“ClickEventScript.cs”中的的“testClick”方法。

在On Click的下面的列表中,分为左右两个选框,左边的选框是游戏对象,这个选框我们使用“Main Carmera”,因为我们将“EventScript.cs”脚本附加到它的上面了。右边的选框则是游戏对象身上的组件方法,因此我们可以选取到“EventScript.cs”中定义号的“testClick”方法。最终的效果如下所示

上面的Runtime Only 表示仅在运行时,其事件处理功能才起作用。

接下来,我们就可以运行整个项目,点击“Button”来查看是否触发“testClick”方法。

控制台已经显示了打印日志了,我们的“testClick”方法被成功调用了。

本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id

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

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

相关文章

SonarQube Api调用指南

好几年前写过一篇sonar api调用的文档,很多人看,但是当时写的比较简陋,很多小伙伴在下方留言,也答应过一些小伙伴些一篇示例,本文主要目的是一篇扫盲贴。 一、接口文档 要使用sonarqube的api接口,你首先要…

递归递推练习题答案

1.用递归的方法123…N的值(in:5,out:15) def dg(n):if n1:return 1else:return dg(n-1)n nint(input()) print(dg(n))2.输出斐波那契数列的第N项,0,1,1,2,3,5,8&#xf…

GIT:git 教程

1. 版本控制 版本控制(Revision Control)用于在开发过程中管理文件修改历史,方便查看和备份。 它的作用如下: 实现跨区域多人协同开发。追踪和记载一个或者多个文件的历史记录。组织和保护你的源代码和文档。统计工作量。并行开…

Java EE企业级应用开发(SSM)第9章

第9章MyBatis入门 一.预习笔记 1.MyBatis框架的特点 1-1.简单易学 1-2.灵活 1-3.提供映射标签 2.MyBatis核心类 2-1.Configuration 2-2.SqlSessionFactory 2-3.SqlSession 2-4.Exector 2-5.MappedStatement 3.MyBatis工作流程 4.Mybatis入门程序 4-0:导…

RFID安全的三次认证

一.RFID介绍 RFID是Radio Frequency Identification的缩写,即射频识别。它是一种通过用电磁场收集数据并从远距离自动识别物体的技术。它使用无线电波来将信息从一个电子标签传输到读卡器中,而不需要直接接触。这些标签可以嵌入到物品中或附加到物品表面…

用Python给模板邮件加彩蛋

需求是这样来的,笔者写了很多的邮件通知模板,里面的内容都是千篇一律的,比如说,***你好,请查收附件什么什么报告,然后在署名,结束。这样的模板邮件会一直发下去,用户看久了会很单调。…

基于C#制作的锁屏小工具,点击图片内容解锁

自己制作的一个无厘头电脑锁屏工具被同事发现了,纷纷要求给他们量身定制安排一套 一、开发步骤1.1 创建项目1.2 窗体设置1.3 键盘钩子事件1.4 解锁按钮设置 一、开发步骤 1.1 创建项目 打开Visual Studio,右侧选择创建新项目。 搜索框输入winform&#…

makefile 结构规则,依赖,伪目标

文章目录 前言一、Makefile 规则格式二、依赖示例:依赖的规则 三、伪目标1. makefile 中的伪目标:2. 伪目标的语法3. 伪目标的规则调用4. 绕开 .PHONY关键字定义伪目标 四、小技巧:1. 命令无回显。2. 可执行文件 和 all 同时作为 makefie 中的…

MOS管常见的故障分析

MOS在控制器电路中的工作状态:开通过程(由截止到导通的过渡过程)、导通状态、关断过程(由导通到截止的过渡过程)、截止状态。MOS主要损耗也对应这几个状态,开关损耗(开通过程和关断过程&#xf…

学java注解,看这一篇文章就够了

一、注解的概念 Annotation(注解)是一种标记,使类或接口附加额外信息,帮助编译器和 JVM 完成一些特定功能。 Annotation(注解)也被称为元数据(Metadata)是JDK1.5及以后版本引入的,用于修饰包、类、接口、字段、方法参数、局部变量等。 常见…

Powered by 平行云 | 我们与大有艺术一起,在玩儿一种很新的戏剧

可以用VR看的,才是真元宇宙! 平行云赋能大有艺术,开启孟京辉导演的元宇宙「沉浸式」戏剧《浮士德》。"全球第一场可以用VR看的元宇宙戏剧"是什么的体验? 让我们一起一探究竟! 你慢慢地走进了一片无边无际的…

巧用千寻位置GNSS软件| 铁路放样必备技巧

铁路放样是在铁路测量施工前的一项重要工作,千寻位置GNSS软件可轻松实现铁路放样,本期就和大家分享具体操作步骤。 点击【测量】->【铁路放样】,在线路库中选择一条线路点击【确定】直接进入线路中 心线放样,如图 5.16-1所示。…

实现方法、构造器位置的自动装配

1.Autowired注解概述 Autowired注解的源码 package org.springframework.beans.factory.annotation;import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPoli…

Uint8Array文件下载

vue项目,自己调用了阿里云OSS的SDK,进行文件的上传以及下载,有个功能是列表中的附件需要支持点击下载,这里就用到阿里云oss的文件下载,使用了Nodejs的SDK const OSS require(ali-oss); const client new OSS({...op…

nodejs+vue网上学生社团管理系统

并运用Photoshop CS6技术美化网页,辅之以CSS技术。系统是基于面向对象编程的web应用程序。本系统主要实现的功能有系统用户管理、社团信息管理、社团类别管理、社团活动管理、社团论坛管理、系统管理、个人资料管理、学生入团管理、社团公告管理、社团活动管理、社团…

Ubuntu22.04安装opencv依赖包libjasper-dev出现unable to locate libjasper-dev的终极解决办法

执行 sudo apt install libjasper-dev 提示 执行 sudo apt install libjasper1 libjasper-dev 仍然提示 更换软件源: sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt-get update提示 该仓库没有数…

tiechui_lesson05_内核小文件拷贝

主要学习在内核中的文件操作,包括文件的打开,创建,读取,写入,查询文件属性等。 涉及的API和宏函数 ZwOpenFileZwCreateFileZwQueryInformationFileZwReadFileZwWriteFileZwCloseInitializeObjectAttributes 1.文件的…

学习日记,java学习

题目 生病了,可能是羊了,喉咙好干,好难受 每日一题 1010. 总持续时间可被 60 整除的歌曲 难度中等268收藏分享切换为英文接收动态反馈 在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。 返回其总持续时间(以秒为单位)可被 60 整除的…

vue+elementui在线教学互动学习考试系统nodejs师生互动交流网站kpm58

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 前端vueelementui, (1) vue引入elementui 1.使用npm安装element-ui npm i element-ui -S 2.在main.js中导入使用vue import element-u…

Android WorldWind的使用与加载数方瓦片

明确下定义,数方瓦片也叫五层十五级瓦片。现记录下如何在World Wind Android中加载数方瓦片的方法。 原理 加载数方瓦片最核心的方法是WorldWindAndroid加载图片的方法,更加详细的使用说明请访问worldwind官网。核心代码如下: Sector sect…