Unity实现UI按钮Button的按下、抬起、移出、移入事件 |
您所在的位置:网站首页 › 按下按钮的英文怎么写的 › Unity实现UI按钮Button的按下、抬起、移出、移入事件 |
在项目过程中,经常遇到unity内响应鼠标按下,抬起等情况的交互监听,但是unity的button组件编写代码时,能直接添加侦听的事件是onClick事件,没有按下、抬起、移出、移入,需要自己进行重写,所以将自己的编写使用过程记录下来以供学习,不足之处请见谅,希望能给各位同行带来便利。 实现思路: 1、重新写类,继承Button,在类中实现相关的事件响应。 2、将类挂载到Cavas下创建的Button按钮上,挂载之前需先移除Button默认的组件button。 3、编写代码给按钮添加事件,这一步与Unity的Button按钮的 onClick.AddListener 用法一样。 注意事项: 1、因为这个类已经继承了Button,所有在Cavas下创建完button按钮时,切记将默认的Button组件删除,将上面这个类挂载到刚创建的button上,不然会提示重复,挂载不成功。 2、在脚本中声明按钮时,将变量类型由原来的Button类型改为MyButton,这是因为我们下一步在执行GetComponent时,< >中的类型将使用MyButton。然后就可以按照普通button的onClick添加侦听函数的写法,添加不同的操作监听了。 MyButton类的代码如下: using UnityEngine.EventSystems; using UnityEngine.UI; using TMPro; using UnityEngine.Events; public class MyButton : Button,IPointerExitHandler,IPointerEnterHandler { public UnityEvent onButtonDown; public UnityEvent onButtonUp; public UnityEvent onButtonExit; public UnityEvent onButtonEnter; // 当按钮被按下时调用 public override void OnPointerDown(PointerEventData eventData) { base.OnPointerDown(eventData); if (onButtonDown != null) onButtonDown.Invoke(); //gameObject.GetComponentInChildren().text = "Pressed"; } // 当按钮被抬起时调用 public override void OnPointerUp(PointerEventData eventData) { base.OnPointerUp(eventData); if (onButtonUp != null) onButtonUp.Invoke(); //gameObject.GetComponentInChildren().text = "Released"; } // 当鼠标从按钮上离开时调用 public override void OnPointerExit(PointerEventData eventData) { base.OnPointerExit(eventData); if (onButtonExit != null) onButtonExit.Invoke(); //gameObject.GetComponentInChildren().text = "Exit"; } // 当鼠标从外面进入到按钮上方时调用 public override void OnPointerEnter(PointerEventData eventData) { base.OnPointerEnter(eventData); if (onButtonEnter != null) onButtonEnter.Invoke(); //gameObject.GetComponentInChildren().text = "Enter"; } } Unity脚本中的使用方法的示例,如下截图中所示: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |