关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式

Checkbox复选框

1.创建一个NGUI背景Sprite1节点

2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节点Sprite1下,删除每个复选框节点下的NGUI Snapshot Point 20子节点,调整位置

3.可以更改每个复选框节点下的Label子节点里面的文字

4.这时候两个复选框可以同时被选中,如果想要做只能选中其中一个,就要设置复选框节点下的UI Toggle组件下的Group值,两个节点的Group值设置为一样就是同一组,就只能一个被选中

 

 

Slider滑动条

1.创建一个NGUI背景Sprite1节点

2.打开NGUI---->Open---->Prefab Toolbar---->选择一个Slider滑动条节点,拖拽到背景节点Sprite1下,调整位置

3.UI Slider组件

 Value:进度条的值

 Foreground:前景图片

 Background:背景图片

 :值改变的时候会用这个函数改变Label的值

4.如果改变一下颜色和Label的位置,就可以做一个血条的效果,只要用代码来改变Slider组件的Value值就可以了

 

 

Button添加事件的6种方法

1.创建一个Sprite类型的Spritebutton节点在背景Sprite1下作为按钮子节点,可以给Spritebutton一个贴图和文字

2.给Spritebutton节点添加按钮组件,NGUI---->Attach---->Collider和Button Script组件

3.创建一个脚本mybuttonCallBack,打开mybuttonCallBack.cs

方法1:直接监听事件 ----- 不推荐使用

把下面代码直接写在mybuttonCallBack里,然后拖mybuttonCallBack脚本到有UI Button组件的节点上,就绑定在按钮节点上了,当按钮点击时就可以监听到,这种方法不太好很不灵活。

void OnClick()
{
    Debug.Log("Button is Click!!!");
}

 

方法2:onClick 列表 ------ 推荐使用

把下面代码直接写在mybuttonCallBack里,然后拖mybuttonCallBack脚本到有UI Button组件的节点上,就绑定在按钮节点上了,当按钮点击时就可以监听到,

void Start () 
{
  //获得UIButton组件里面的onClick事件代理列表,public List<EventDelegate> onClick = new List<EventDelegate>(),给这个列表里面添加一个新的事件
  this.GetComponent<UIButton>().onClick.Add(new EventDelegate(this.OnClickButton2));    
}

void OnClickButton2 ()
{
  Debug.Log("OnClickButton2");
}

 

 另一种写法,这种可以写在任意类中或者脚本中

void Start()
{
    GameObject jump_button = GameObject.Find("game_root/cameras/UI Root/jump");
    jump_button.GetComponent<UIButton>().onClick.Add(new EventDelegate(this.Jump));
}
public void Jump()
{
} 
        

 

方法3:使用SendMessage:早期的方法,不推荐使用,用多了之后消息满天飞,性能低,对于后期维护和代码调试非常不好, 尤其是几万行代码之后,现在游戏一般都是5万行或者一二十万行的代码------- 不推荐使用

选择按钮Spritebutton后,在Unity导航菜单栏中选择Component->Interaction->Button Message 组件。
Target:接收按钮消息的游戏对象。是按钮节点Spritebutton。
Function Name:接收按钮消息的方法,拥有这个方法的脚本mybuttonCallBack必须绑定在上面Target对象Spritebutton身上。
Trigger:触发事件的方式,OnClick显然是一次点击,还有OnMouseovor鼠标经过等等。
Include Children :是否让该对象的所有子对象也发送这个点击事件。

 

方法4:UIEventListener --------推荐使用
选择按钮后在Unity导航菜单栏中选择Component->NGUI->Internal ->Event Listener 。 如果不添加也可以,运行的时候会帮我们自动添加一个,所以手动添加会更快,避免了添加组件的代码的执行。
挂在按钮上就可以,它没有任何参数。
在任何一个脚本或者类中即可得到按钮的点击事件、把如下代码放在任意类中或者脚本中。

//或者写在void Start () 
void Awake () 
{    
  //获取需要监听的按钮对象
  GameObject button = GameObject.Find("UI Root/Camera/Anchor/Panel/LoadUI/MainCommon/Button");
  //设置这个按钮的监听,指向本类的ButtonClick方法中。如果这个脚本是挂在按钮上的,就不用上一句,button用this.gameobject代替
  UIEventListener.Get(button).onClick = ButtonClick4;
}

//计算按钮的点击事件
void ButtonClick4(GameObject button)
{
  Debug.Log("ButtonClick4");
}

 

方法5:EventDelegate --------推荐使用

和第2种方法类似,把下面代码直接写在mybuttonCallBack里,然后拖mybuttonCallBack脚本到有UI Button组件的节点上,就绑定在按钮节点上了,当按钮点击时就可以监听到,

void Start () 
{ 
  // 给Button按钮添加监听事件 
  EventDelegate.Add (GetComponent<UIButton> ().onClick, AddOnClick5); 
}


public void AddOnClick5 () 
{ 
  Debug.Log ("AddOnClick5"); 
} 

// 取消NGUI按钮的监听事件 
public void CancelOnClick () 
{ 
  EventDelegate.Remove (GetComponent<UIButton> ().onClick, AddOnClick5); 
} 

 

方法6:UIEventTrigger --------推荐使用

选择按钮节点,添加一个UI EventTrigger组件,里面可以设置各种各样的触发事件的方式以及可以设置绑定事件的节点和设置要触发的节点里面所挂载脚本的public方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 关于UnitySlider滑动事件,您可以使用Unity自带的UI组件来实现。在UnitySlider组件有一个OnValueChanged事件,可以在滑动触发。您可以将该事件与一个C#脚本的方法绑定,当Slider的值发生改变时,该方法会被调用。 以下是一个简单的示例代码: ```csharp using UnityEngine; using UnityEngine.UI; public class SliderTest : MonoBehaviour { public Slider slider; private void Start() { // 绑定OnValueChanged事件 slider.onValueChanged.AddListener(OnSliderValueChanged); } private void OnSliderValueChanged(float value) { Debug.Log("Slider value changed: " + value); } } ``` 在上面的示例代码,我们首先在Start方法Slider的OnValueChanged事件与一个叫做OnSliderValueChanged的方法绑定。在OnSliderValueChanged方法,我们打印了一个调试信息,以表明滑动事件已经触发。 希望这可以帮助您实现您的需求。 ### 回答2: UnitySlider是一用户界面(UI)元件,用于控制一个数值在一个范围内的选择。Slider具有滑动的效果,用户可以通过拖动滑块来改变数值。在UnitySlider提供了滑动事件来响应用户的操作。 当用户拖动Slider的滑块时,滑动事件将被触发。可以通过订阅Slider对象的OnValueChanged事件来监听滑动事件。当滑块的值发生改变时,该事件将会被调用。可以将对应的方法绑定到此事件上,以执行特定的操作。 例如,可以通过编写一个方法,在滑动事件触发时改变场景某个物体的位置或者大小。具体地,可以在滑动事件回调方法获取Slider的当前值,然后根据需要对物体进行相应的变换操作。 除了滑动事件Slider还提供了其他一些有用的属性和方法,例如最小值、最大值、当前值等,以及用于自定义滑块外观和操作的各设置。 总而言之,UnitySlider滑动事件为开发者提供了一个方便的方式来监控用户对Slider的操作,并根据用户的选择做出相应的响应。 ### 回答3: 在UnitySlider滑动事件是指在滑动Slider触发事件Slider是一常用的UI组件,用于选择一个值或范围。当我们在游戏或应用程序使用Slider时,我们通常希望在滑动Slider时执行一些自定义操作。 在Unity,可以通过编写脚本来实现Slider滑动事件的处理。首先,我们需要在脚本引用Slider组件,并将其分配给一个变量,以便我们可以在脚本使用它。 接下来,我们可以使用Unity提供的方法来监听Slider滑动事件。例如,可以使用AddListener方法将一个方法绑定到Slider的onValueChanged事件上。当Slider的值发生变化时,绑定的方法将被触发。 在绑定的方法,我们可以执行一些自定义的操作。例如,可以根据Slider的值来更新游戏的某个对象的属性,或者根据Slider的值来触发其他游戏逻辑。 此外,我们还可以使用Slider的其他属性和方法来进一步扩展和定制Slider滑动事件。例如,可以修改滑动的范围、设置滑动步长或禁用Slider的交互等。 总而言之,UnitySlider滑动事件允许我们在滑动Slider时执行自定义操作。通过监听Slider滑动事件并在绑定的方法编写相应的代码,我们可以根据需要实现各滑动事件的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值