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按钮的资料请关注我们其它相关文章!