Button

来源:互联网 发布:wifi字典破解软件 编辑:程序博客网 时间:2024/06/04 20:03

一、Button(Script)组件:


Interactable(是否可用)勾选,按钮可用;取消勾选,按钮不可用,并进入Disabled状态。

Transition(过渡方式):按钮在状态改变时自身的过渡方式:

Color Tint(颜色改变) 

Sprite Swap(图片切换) 

Animation(执行动画)

Target Graphic(过渡效果作用目标):可以是任一Graphic对象。

Navigation(按钮导航):假如你现在有四个按钮,当你点击第一个时,第一个会保持选中状态,然后通过按键盘方向键,会导航将选中状态切换到下一个按钮上,例如你的第一个按钮下方存在第二个按钮,当你选中第一个按方向键下时,第一个按钮的选中状态取消,第二个按钮进入选中状态,前提是这些按钮都开启了导航功能。

None(关闭):关闭导航。

Automatic(自动导航):自动识别并导航到下一个控件。

Horizontal(水平导航):水平方向导航到下一个控件。

Vertical(垂直导航):垂直方向导航到下一个控件。

Explicit(指定导航):特别指定在按下特定方向键时从此按钮导航到哪一个控件。

OnClick():按钮点击事件触发集合。



Color Tint(颜色改变过渡模式)

Normal Color(默认颜色):初始状态的颜色。

Highlighted Color(高亮颜色):选中状态或是鼠标靠近会进入高亮状态。

Pressed Color(按下颜色):鼠标点击或是按钮处于选中状态时按下enter键。

Disabled Color(禁用颜色):禁用时颜色。

Color Multiplier(颜色切换系数):颜色切换速度,越大则颜色在几种状态间变化速度越快。

Fade Duration(衰落延时):颜色变化的延时时间,越大则变化越不明显。



Sprite Swap(图片切换过渡模式)

Highlighted Sprite(高亮图片):选中状态或是鼠标靠近会进入高亮状态。

Pressed Sprite(按下图片):鼠标点击或是按钮处于选中状态时按下enter键。

Disabled Sprite(禁用图片):禁用时图片。



Animation(播放动画过渡模式)

Normal Trigger(默认触发器):默认状态触发。

Highlighted Trigger(高亮触发器):选中状态或是鼠标靠近会进入高亮状态。

Pressed Trigger(按下触发器):鼠标点击或是按钮处于选中状态时按下enter键。

Disabled Trigger(禁用触发器):禁用时触发。

Auto Generate Animatior(自动生成动画控制器)

点击此按钮,会自动生成一个包含了以上四种状态以及四种动画的animatior,然后选中此按钮,ctrl+6进入动画编辑界面,分别对以上四种动画进行调动就可以了。


二、点击事件

  1. UnityAction本质上是delegate,且有数个泛型版本(参数最多是4个),一个UnityAction可以添加多个函数(多播委托)

  2. UnityEvent本质上是继承自UnityEventBase的类,它的AddListener()方法能够注册UnityAction,RemoveListener能够取消注册UnityAction,还有Invoke()方法能够一次性调用所有注册了的UnityAction。UnityEvent也有数个泛型版本(参数最多也是4个),但要注意的一点是,UnityAction的所有带参数的泛型版本都是抽象类(abstract),所以如果要使用的话,需要自己声明一个类继承之,然后再实例化该类才可以使用。

(1)动态加载点击事件
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Events;


public class test : MonoBehaviour {


public GameObject obj;
public  delegate void BtnDelegate();
public BtnDelegate btnEvent;


void Start () {

btnEvent = OnClick ;
AddEventListener (obj, OnClick);
//obj.GetComponent<Button> ().onClick.AddListener (OnClick);
}


public  void  OnClick()            
{

Debug.Log ("我被点击了");
}

public void AddEventListener(GameObject  _target,UnityAction  _callback)
{
Button button = _target.GetComponent<Button> ();


if(button==null)
{
Debug.Log ("按钮" + _target.name + "丢失脚本Button!");
}


button.onClick.AddListener (_callback);


}
}




0 0