【Unity3D】UGUI之Button
1 Button属性面板
在 Hierarchy 窗口右键,选择 UI 列表里的 Button 控件,即可创建 Button 控件,选中创建的 Button 控件,按键盘【T】键,可以调整 Button 控件的大小和位置。创建 Button 控件时,系统会自动给其创建一个 Text 子控件,用于承载按钮的文本显示和格式控制。

Button 控件的属性面板如下:

1)Interactable
Interactable 用于设置按钮交互是否有效,取消勾选后,按钮会变灰。
Interactable=true
Interactable=false
2)Transition
Transition 用于设置悬浮、点击、离开按钮时,按钮样式的变化。
3)Navigation
Navigation 用于设置可交互 UI 的导航方式,即:当前控件获得焦点时,按上下左右箭头键,下一个焦点控件是谁。
2 Button 注册事件
点击 OnClick 下面的 “+” 号,可以为按钮添加响应事件,可以添加多个事件。
1)注册已有组件的方法
点击 OnClick 下面的 “+” 号,将 Button 下面的 Text 控件拖拽到 OnClick 面板里,选择 Text.text,下方文本设置 "xxxx",如下:

单击按钮,按钮的文本会显示为 “xxxx”,如下:

2)注册脚本组件里面的方法
给 Button 控件添加 ButtonController 脚本组件如下:
ButtonController.cs
using UnityEngine;
public class ButtonController : MonoBehaviour {
public void OnClick1() {
Debug.Log("Click1");
}
public void OnClick2(string msg) {
Debug.Log("Click2, msg=" + msg);
}
}
注意:待注册的方法,最多只能提供 1 个参数。
点击 OnClick 下面的 “+” 号,将 ButtonController 脚本组件拖拽到 OnClick 面板里,选择 ButtonController.OnClick1 方法;再点击 OnClick 下面的 “+” 号,将 ButtonController 脚本组件拖拽到 OnClick 面板里,选择 ButtonController.OnClick2 方法,其下方输入"xxxx"。如下:

单击按钮控件,打印日志如下:

3)代码里注册事件
给 Button 控件添加 ButtonController 脚本组件如下:
ButtonController.cs
using UnityEngine;
using UnityEngine.UI;
public class ButtonController : MonoBehaviour {
private void Start() {
Button button = GetComponent<Button>();
button.onClick.AddListener(OnClick);
}
private void OnClick() {
Debug.Log("Click");
}
}
注意: AddListener 方法里只能添加无参方法,可以添加多个方法。
单击按钮控件,打印日志如下:

声明:本文转自【Unity3D】UGUI之Button
【Unity3D】UGUI之Button的更多相关文章
- Unity3d UGUI 通用Confirm确认对话框实现(Inventory Pro学习总结)
背景 曾几何时,在Winform中,使用MessageBox对话框是如此happy,后来还有人封装了可以选择各种图标和带隐藏详情的MessageBox,现在Unity3d UGui就没有了这样的好事情 ...
- Unity3D UGUI之ScrollView弹簧效果
unity3d版本5.3.2p4 UGUI中ScrollView包含Viewport(Content) ScrollView包含脚本.其Movement Type一共3个选项.Elastic就是弹簧效 ...
- ugui,button的一个坑
如果ugui button下面挂了一些image或text,而这些image或text的范围超出了button本身的范围,则应将image和text的raycast Target属性的勾选去掉,否则只 ...
- Unity3D NGUI 给button按钮添加单间事件
Unity3D中, NGUI 给button按钮添加单间事件的方法很多,在这里只给推荐一种比较常用的方法. 推荐方法:使用UIListener. 1.给button组价添加上UIListener.选择 ...
- Unity3D UGUI下拉菜单/Dropdown组件用法、总结
Unity3D中UGUI实现下拉菜单 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- Unity3D - UGUI的手动搭建
了解UGUI组件的搭建方式,有助于搭建我们自己的UI界面. Text 文本 text 是UGUI中的基本控件,在Hierarchyi面板创建一个空物体 - 给这个空物体添加一个Text组件即可实现与t ...
- UGUI 实现Button长按效果(RepeatButton)
Tag:加入了一个延迟,在button按下状态一段时间后再開始 repeate using UnityEngine; using UnityEngine.Events; using UnityEngi ...
- Unity3d uGUI适配
Cavas: 1.Render Model设置为:Screen Space- Camera.如果想在UI前面加特效我可以在创建一个摄像机(UIForward)深度大于这个UICamera就行了. 2. ...
- Unity3D UGUI学习系列索引(暂未完成)
U3D UGUI学习1 - 层级环境 U3D UGUI学习2 - Canvas U3D UGUI学习3 - RectTransform U3D UGUI学习4 - Text U3D UGUI学习5 - ...
- Unity3D UGUI窗口拖拽
在开发UGUI时 我们时常需要做一个窗口拖拽的功能 先上代码 using UnityEngine; using UnityEngine.EventSystems; public class DragW ...
随机推荐
- 存储器(Memory)
存储器(Memory) 通信领域中有很多重要的部分,比如基带.射频芯片,存储器. 1.存储器是什么?和内存如何进行区分? 作为数据的载体,存储器是任何电子设备中都必不可少的单元.由于存储器之间相似的名 ...
- 基于AHB_BUS的eFlash控制器设计-01
基于AHB-BUS的eflash控制器设计 SRAMC是单周期的读写,控制比较简单,没有状态机也没有软硬件的协同 eflash是非易失性的存储器,可以进行读写擦除,它也是一个基于AHB_slave的模 ...
- [java] JSP post 提交乱码 解决方案
//在post提交的页面顶部插入下列代码 <% request.setCharacterEncoding("UTF-8"); %>
- Grafana针对内存监控值的学习与使用
Grafana针对内存监控值的学习与使用 背景 因为学习内存相关的知识, 可以通过pgcacher/sar -r 等命令监控系统信息. 但是现在发现. 不太直观, 所以想着使用别的方式来进行处理. 然 ...
- parquet极简学习
parquet极简学习 摘要 parquet的概念: Parquet文件是一种列式存储文件格式,广泛应用于大数据处理框架, 如Apache Hadoop和Apache Spark. 它通过将数据组织成 ...
- [转帖]RocketMQ - nameSrv和Broker
RocketMQ RocketMQ是一个统一的消息传递引擎,轻量级的数据处理平台. Name Server Name Server充当路由消息的提供者,生产者(Producer)或消费者(Custom ...
- [转帖]linux下/proc/sysrq-trigger详解
/proc/sysrq-trigger详解 这是一组"魔术组合键",只要内核没有被完全锁住,不管内核在做什么事情,使用这些组合键能即时打印出内核的信息. 使用SysRq组合键是了解 ...
- [转帖]linux的硬链接和软连接的区别
Linux中有两种链接文件: 1)软链接(符号链接symbol),等同于Windows中快捷方式 ln -s 源文件名 符号链接文件名,源文件名和符号链接文件名是主从关系,源被删了,符号链接也就失效了 ...
- zabbix基于容器化在UOS1050E上面的安装与使用
前言 想着能够监控一下操作系统的日志. 因为国产化的需求, 所以我这边使用了UOS1050E 安装zabbix时多次提示缺少php-json 或者是缺少一些libevent等组件. 自己尝试进行解决发 ...
- Vite 按需引入 Ant Design Vue 3.0
Vite 按需引入 Ant Design Vue 3.0 第一步下载: npm i unplugin-vue-components -D 需要注意的是:Vite你可以用 unplugin-vue-co ...