返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Unity技术手册之Button按钮使用实例详解
  • 626
分享到

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

Unity技术Button按钮Unity Button 2022-11-13 19:11:07 626人浏览 独家记忆
摘要

目录?实践过程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按钮的资料请关注编程网其它相关文章!

--结束END--

本文标题: Unity技术手册之Button按钮使用实例详解

本文链接: https://lsjlt.com/news/170977.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作