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

 更新时间:2022年11月08日 09:33:40   作者:芝麻粒儿  
这篇文章主要为大家介绍了Unity技术手册之Button按钮使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

👉实践过程

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

创建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按钮的资料请关注脚本之家其它相关文章!

相关文章

  • C#中常见的系统内置委托用法详解

    C#中常见的系统内置委托用法详解

    这篇文章主要介绍了C#中常见的系统内置委托用法,主要包括了Action类的委托、Func类的委托、Predicate<T>委托、Comparison<T>委托等,需要的朋友可以参考下
    2014-09-09
  • 根据灰度值填充字符-单文件单线程版

    根据灰度值填充字符-单文件单线程版

    本文介绍如何实现:类似于一个图片,处理后,根据不同的灰度值,填充不同的字符等相关功能,感兴趣的朋友可以了解下哦
    2013-01-01
  • C#多线程之Thread中Thread.Join()函数用法分析

    C#多线程之Thread中Thread.Join()函数用法分析

    这篇文章主要介绍了C#多线程之Thread中Thread.Join()函数用法,实例分析了Thread.Join()方法的原理与使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#实现网页截图功能

    C#实现网页截图功能

    这篇文章主要介绍了C#实现网页截图功能,是非常实用的一个功能,需要的朋友可以参考下
    2014-08-08
  • 微信开发--企业转账到用户

    微信开发--企业转账到用户

    本文主要介绍了微信开发--企业转账到用户的实现方法与步骤。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • C#利用FileSystemWatcher实时监控文件的增加,修改,重命名和删除

    C#利用FileSystemWatcher实时监控文件的增加,修改,重命名和删除

    好多时候,我们都需要知道某些目录下的文件什么时候被修改、删除过等。本文将利用FileSystemWatcher实现实时监控文件的增加,修改,重命名和删除,感兴趣的可以了解一下
    2022-08-08
  • c# 向MySQL添加数据的两种方法

    c# 向MySQL添加数据的两种方法

    这篇文章主要介绍了c# 向MySQL添加数据的两种方法,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • Unity键盘WASD实现物体移动

    Unity键盘WASD实现物体移动

    这篇文章主要为大家详细介绍了Unity键盘WASD实现物体移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • C#中的DateTime是值类型还是引用类型

    C#中的DateTime是值类型还是引用类型

    近期遇到了DateTime到底是值类型还是引用类型的疑惑,顺势较深入地了解一下DateTime相关的内容,大家有需要的朋友可以参考下
    2017-04-04
  • 3种C# 加载Word的方法

    3种C# 加载Word的方法

    本次经验内容分享通过C#程序来加载Word文档的3种不同方法。分别是:加载本地Word文档、以只读模式加载Word文档、从流加载Word 想具体了解的小伙伴请参考下文
    2021-09-09

最新评论