Unity技术手册之Button按钮使用实例详解

目录
  • 实践过程
    • Color Tint-表示颜色过度
    • Sprite Swap-表示精灵过度
    • Animation-动画

实践过程

为了方便更多的人(新手)看明白,使用的汉字,真实项目尽量使用英文规则昂。

创建Button按钮很简单,在Hierachy面板中直接右键找到UI-Button即可。创建后我们可以看到Button其实就是挂载了一个Image组件一个Button组件,顺便携带一个Text子物体。

其中Image组件的属性,小空之间有单独介绍过,在这不赘述了。我们详细看Button组件中的内容,注意,所有参数是运行时生效

Interactable:表示是否可交互,取消勾选Button就不能触发点击了,并且设置的颜色或精灵等都不会生效。

Transition:设置Button的过度效果,有四个设置选项(下方有图,重点属性)无、颜色过度、精灵图切换过度、动画过度。

Color Tint-表示颜色过度

  • Target Graphic:表示该组件的属性作用于哪个对象或者说UI控件实现效果的对象,一般都是自身,虽然可以指定其他按钮,但是这种需求不多。
  • Normal Color:正常颜色。鼠标不在Button上时的颜色。
  • Highlighted Color:高亮颜色。鼠标悬浮在Button上时的颜色(不点击)。
  • Pressed Color:表示按压颜色值。鼠标点击Button时的颜色,松开后恢复。
  • Selected Color:表示被选中的颜色值。鼠标点击Button时的颜色,松开后保持不变,除非点击Button外的界面才会恢复。
  • Disabled Color:禁用时的颜色。禁用Button后的颜色,脚本中禁用。
  • Color Multiplier:颜色倍数,1-5之间,一般默认1即可,如果想突出颜色,增大即可。
  • Fade Duration:淡入淡出的持续时间,表示不同按钮状态切换的时间。

Sprite Swap-表示精灵过度

  • Target Graphic:表示该组件的属性作用于哪个对象或者说UI控件实现效果的对象,一般都是自身,虽然可以指定其他按钮,但是这种需求不多。
  • Highlighted Sprite:高亮时候显示的精灵。鼠标悬浮在Button上时的精灵(不点击)。
  • Pressed Sprite:表示按压精灵值。鼠标点击Button时的精灵,松开后恢复。
  • Selected Sprite:表示被选中的精灵。鼠标点击Button时的精灵,松开后保持不变,除非点击Button外的界面才会恢复。
  • Disabled Sprite:禁用时的精灵。禁用Button后的精灵,脚本中禁用。

Animation-动画

  • Normal Trigger:正常时间的动画。鼠标不在Button上时的动画。
  • Highlighted Trigger:高亮动画。鼠标悬浮在Button上时的动画(不点击)。
  • Pressed Trigger:表示按压动画值。鼠标点击Button时的动画,松开后恢复。
  • Selected Trigger:表示被选中的动画值。鼠标点击Button时的动画,松开后保持不变,除非点击Button外的界面才会恢复。
  • Disabled Trigger:禁用时的动画。禁用Button后的动画,脚本中禁用。

需要点击【Auto Generate Animation】创建动画控制器,然后给上面的这几个动画文件录制动画(如缩放等)

Visualize:是否可视化。打开后会在Scene中显示出每个UI控件之间的辅助顺序,和Gizmos辅助很相似,但不受Gizmos控制。

Navigation :控件间导航,一般我们设置为None,该属性控制焦点自动为下一个,比如多个按钮,并且你没在看是范围内,虽然无法鼠标点击但是可以键盘空格键触发。

On Click() :给按钮添加响应事件(将脚本挂载在该Button上,拖拽Button到这,即可从下拉中找到脚本中public类型的方法,指定就表示点击触发该方法),除了这还有代码动态添加的方式(下方详细)。 还有图中的Runtime Only表示运行后才会响应事件,还有两个选项,一个是off从不响应,一个是Editor And Runtime表示即使没运行也能响应,默认即可。

public class TestClick : MonoBehaviour
    {
        private void Start()
        {
            Button btn = gameObject.GetComponent<Button>();
            //添加事件写法一-只能添加方法名 无法传递参数
            // btn.onClick.AddListener(methodA);
            //添加事件写法二 -可以传递参数
            // btn.onClick.AddListener(delegate { methodB(); });
            // btn.onClick.AddListener(() => { methodA();});
            //方式一添加多个方法
            // btn.onClick.AddListener(methodA);
            // btn.onClick.AddListener(methodB);
            //方式二添加多个方法
            // btn.onClick.AddListener(method);
            //下方是简易封装的一种写法,和Android中的类似
            List<string> btnsName = new List<string>();
            btnsName.Add("想要添加事件的");
            btnsName.Add("场景中");
            btnsName.Add("按钮的名字");
            foreach (string btnName in btnsName)
            {
                GameObject btnObj = GameObject.Find(btnName);
                Button btnTemp = btnObj.GetComponent<Button>();
                btnTemp.onClick.AddListener(delegate() { this.OnClick(btnObj); });
                //或者:
                //btnTemp.onClick.AddListener(() => { OnClick(btnObj); });
            }
        }
        public void OnClick(GameObject sender)
        {
            switch (sender.name)
            {
                case "想要添加事件的":
                    Debug.Log("想要添加事件的");
                    break;
                case "场景中":
                    Debug.Log("场景中");
                    break;
                case "按钮的名字":
                    Debug.Log("按钮的名字");
                    break;
                default:
                    Debug.Log("none");
                    break;
            }
        }
        private void method()
        {
            methodA();
            methodB();
        }
        private void methodA(String param)
        {
            Debug.Log("事件A-方法A-携带参数" + param);
        }
        private void methodA()
        {
            Debug.Log("事件A-方法A");
        }
        private void methodB()
        {
            Debug.Log("事件B-方法B");
        }
}

以上就是Unity技术手册之Button按钮使用实例详解的详细内容,更多关于Unity技术Button按钮的资料请关注我们其它相关文章!

(0)

相关推荐

  • Unity3D仿写Button面板事件绑定功能

    本文实例为大家分享了Unity3D仿写Button面板事件绑定功能的具体代码,供大家参考,具体内容如下 最近在做一个情节引导得项目.其中一个需求特点是:每一步都要显示类似的信息,不同的是,每一次要去引导玩家玩的东西不同.比如:第一步需要显示物体1,第二步需要显示物体2,区别就是在相同的脚本调用不同的函数.我们不可能为了每一次不同的设置写不同的脚本,如果一千多步,难道要写一千多个脚本?突然想要unity 的UGUI中button事件的绑定是一个好的解决方案.于是我上网搜索了button的源代码.如

  • Unity游戏开发实现场景切换示例

    目录 引言 一.实现逻辑 二.代码实现 2.1 Transition Manager 2.2 Teleport 2.3 Cursor Manager 引言 在unity中可以将不同场景的背景和道具放置在不同的Scene当中,通过对Scene的加载和卸载来实现场景之间的切换.同时创建一个基础场景(Control Scene)来对整个游戏系统进行管理,在基础场景(Control Scene)中不放置背景图片或者游戏道具而只添加各种控制单元和Canvas. 一.实现逻辑 在场景切换的实现过程中需要定义

  • Unity创建平铺网格地图的方法

    本文实例为大家分享了Unity创建平铺网格地图的具体代码,供大家参考,具体内容如下 创建预制件 先拖进场景,再从层级拖回资源 选中源图像文件,设置每单位像素可以不改变组件缩放修改显示大小 脚本编辑 创建一个空对象和脚本文件 挂载脚本到空对象 双击脚本进入编辑 using System.Collections; using System.Collections.Generic; using UnityEngine;   public class CreateMap : MonoBehaviour

  • Unity3d 如何更改Button的背景色

    我就废话不多说了,大家还是直接看代码吧~ using UnityEngine; using System.Collections; public class ButtonStyle : MonoBehaviour { public Color _color;//在编辑环境下选择背景色,透明度不能为0 public Texture2D tex; void OnGUI(){GUI.Button(new Rect(0,0,100,100),"tex");Color oldColor = GU

  • Unity中协程IEnumerator的使用方法介绍详解

    在Unity中,一般的方法都是顺序执行的,一般的方法也都是在一帧中执行完毕的,当我们所写的方法需要耗费一定时间时,便会出现帧率下降,画面卡顿的现象.当我们调用一个方法想要让一个物体缓慢消失时,除了在Update中执行相关操作外,Unity还提供了更加便利的方法,这便是协程. 在通常情况下,如果我们想要让一个物体逐渐消失,我们希望方法可以一次调用便可在程序后续执行中实现我们想要的效果. 我们希望代码可以写成如下所示: void Fade() { for (float f = 1f; f >= 0;

  • unity 如何获取button文本的内容

    如下就可以获取button中的文本内容 using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System; public class ButtonContent : MonoBehaviour{ public Button btn; void Start(){ btn = GameObject.Find("填写button名").getComponent<Button&g

  • Unity技术手册之Button按钮使用实例详解

    目录 实践过程 Color Tint-表示颜色过度 Sprite Swap-表示精灵过度 Animation-动画 实践过程 为了方便更多的人(新手)看明白,使用的汉字,真实项目尽量使用英文规则昂. 创建Button按钮很简单,在Hierachy面板中直接右键找到UI-Button即可.创建后我们可以看到Button其实就是挂载了一个Image组件一个Button组件,顺便携带一个Text子物体. 其中Image组件的属性,小空之间有单独介绍过,在这不赘述了.我们详细看Button组件中的内容,

  • Bootstrap按钮组实例详解

    使用方法 按钮组和下拉菜单组件一样,需要依赖于button.js插件才能正常运行.不过我们同样可以直接只调用bootstrap.js文件.因为这个文件已集成了button.js插件功能 同样地,因为Bootstrap的组件交互效果都是依赖于jQuery库写的插件,所以在使用bootstrap.js之前一定要先加载jquery.js才会产生效果 <!DOCTYPE html> <html lang="en"> <head> <meta chars

  • Android 使用selector改变按钮状态实例详解

    Android 使用selector改变按钮状态实例详解 在res/drawable文件夹新增一个文件,此文件设置了图片的触发状态,你可以设置 : state_pressed,state_checked,state_pressed,state_selected,state_focused,state_enabled 等几个状态: < selector xmlns:android="http://schemas.android.com/apk/res/android"> &l

  • Android 自定义返回按钮的实例详解

    Android 自定义返回按钮的实例详解 程序中我们有时候想让放回按钮按照自己的需求调整页面而不是单纯的按照系统返回上一级,这个问题很简单,重写 onKeyDown 方法即可. 下面方法,包含了 webview 中的返回上一页和普通 activity 的单击设置和双击退出程序. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //如果我们用的是webview页面,想返回网页的上一页设置这里就可以了 if (key

  • Android仿饿了么加入购物车旋转控件自带闪转腾挪动画的按钮效果(实例详解)

    概述 在上文,酷炫Path动画已经预告了,今天给大家带来的是利用 纯自定义View,实现的仿饿了么加入购物车控件,自带闪转腾挪动画的按钮. 效果图如下: 图1 项目中使用的效果,考虑到了View的回收复用, 并且可以看到在RecyclerView中使用,切换LayoutManager也是没有问题的, 图2 Demo效果,测试各种属性值 注意,本控件非继承自ViewGroup,而是纯自定义View实现.理由如下: 1 减少布局层级,从而提高性能 2 文字和图形纯draw,用到什么draw什么,没有

  • Android编程之滑动按钮事件实例详解

    本文实例讲述了Android滑动按钮事件.分享给大家供大家参考,具体如下: 今天纪录一下滑动按钮功能.. 首先效果图: 然后是分别建立三个文件,第一个是main.class,第二个是SlipButton.class,第三个是 onchangeListener.class main.class import Android.app.Activity; import android.os.Bundle; import android.widget.Toast; public class Main e

  • Unity技术手册之Slider滑动器使用实例详解

    目录 实践过程 Slider其他参数 实践过程 为了方便更多的人(新手)看明白,使用的汉字,真实项目尽量使用英文规则昂. 该控件通常可以用于技能冷却或者人物血条或者游戏里面设置功能的各种滑动条. 我们在Hierarchy窗口中右键(UI-Slider)创建一个滑动条(如下图).会发现有五个子物体,其实主要的是Background和Fill以及Handle,另外两个带Area的是为了做宽高适配,一直填充满父物体Slider. Background便是默认的滑动条底图或底色.Fill是滑动进度的填充

  • C#动态创建button按钮的方法实例详解

    C#动态创建button按钮的方法实例详解 C#编程中经常需要动态创建,本文主要介绍C#动态创建button按钮的方法,涉及C#按钮属性动态设置的相关技巧,以供借鉴参考.具体实现方法如下: 例子: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.T

  • Android持久化技术之SharedPreferences存储实例详解

    本文实例讲述了Android持久化技术之SharedPreferences存储.分享给大家供大家参考,具体如下: 1.SharedPreferences存储 在前面一篇文章<Android持久化技术之文件的读取与写入实例详解>中,我们介绍了Android持久化技术的文件的读取与写入.在本文中,继续介绍Android持久化技术另外一个SharedPreferences存储. (1)SharedPreferences存储方式是基于key-value的,通过key可以找到对应的value. (2)支

  • 使用JSP技术实现一个简单的在线测试系统的实例详解

    1.登陆界面 实现: 本界面由三部分构成,Footer.jsp,Index.jsp,Header.jsp Header.jsp <center> <h2>在线测试系统</h2> <p> <a href="Index.jsp" rel="external nofollow" >登录</a> | <a href="test.jsp" rel="external n

随机推荐