当前位置: 首页 > news >正文

西安网站建设公司排wordpress 实时预览

西安网站建设公司排,wordpress 实时预览,找人做网站怎么找,网站备案编号查询Button拓展 今天来聊一下关于Button的事件拓展#xff0c;这里只是拿Button来举例#xff0c;Unity中其他的UI组件如Toggle、Slider等都也适用。 我们知道在Button中我们可以通过onClick的方式来添加点击事件#xff0c;但在游戏开发过程中我们往往对Button有着更多的功能需…Button拓展 今天来聊一下关于Button的事件拓展这里只是拿Button来举例Unity中其他的UI组件如Toggle、Slider等都也适用。 我们知道在Button中我们可以通过onClick的方式来添加点击事件但在游戏开发过程中我们往往对Button有着更多的功能需求比如说双击、长按、按钮按下、按钮弹起等。这里举一个游戏中实际的例子在游戏背包中的道具单击道具时我们需要显示道具的tips框双击时我们会去使用道具长按时我们则可以拖动道具当长按弹起时则道具回到原位或移动到新格子内。虽然这里的背包道具不是按钮但在单个UI组件上集合了单击、双击、长按、按钮弹起等事件的响应。接下来将介绍如何拓展UI组件来实现这些功能。 首先我们来认识一下Selectable这个类Selectable是所有交互组件的基类Unity原生的Button组件就是继承了Selectable我们要拓展Button功能也是对Selectable下的OnPointerDown、OnPointerUp等接口进行重写。 话不多说先上代码代码有点长大家可以先跳过细节后面慢慢讲解。 using System; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems;public class ExButton : Button {private enum EnumExButtonState{/// summary空/summaryNone,/// summary鼠标按下/summaryPointerDown,/// summary鼠标按下/summaryPointerUp,/// summary单击/summaryClick,/// summary双击/summaryDoubleClick,/// summary长按开始/summaryPressBegin,/// summary长按/summaryPress,/// summary长按结束/summaryPressEnd,}/// summary按钮状态/summaryprivate EnumExButtonState mButtonState EnumExButtonState.None;/// summary鼠标按下时间/summaryprivate float mPointerDownTime 0.0f;[SerializeField]/// summary双击间隔时间/summaryprivate float mDoubleClickInterval 0.2f;[SerializeField]/// summary长按开始时间/summaryprivate float mPressBeginTime 0.3f;[SerializeField]/// summary长按间隔时间0为每帧调用/summaryprivate float mPressIntervalTime 0.2f;/// summary长按缓存时间/summaryprivate float mPressCacheTime 0f;public Action OnClick { get; set; }public Action OnDoubleClick { get; set; }public Action OnPressBegin { get; set; }public Action OnPress { get; set; }public Action OnPressEnd { get; set; }public override void OnPointerDown(PointerEventData eventData){if (OnDoubleClick ! null){if (mButtonState EnumExButtonState.None){mButtonState EnumExButtonState.PointerDown;mPointerDownTime Time.time;}else if (mButtonState EnumExButtonState.PointerUp){if (Time.time - mPointerDownTime mDoubleClickInterval){mButtonState EnumExButtonState.DoubleClick;return;}else{mButtonState EnumExButtonState.PointerDown;mPointerDownTime Time.time;}}}if (OnPressBegin ! null || OnPress ! null || OnPressEnd ! null){if (mButtonState ! EnumExButtonState.DoubleClick){mButtonState EnumExButtonState.PointerDown;mPointerDownTime Time.time;}}if (OnClick ! null) { }}public override void OnPointerUp(PointerEventData eventData){if (OnDoubleClick ! null){if (mButtonState EnumExButtonState.DoubleClick)return;}if (OnPressBegin ! null || OnPress ! null || OnPressEnd ! null){if (mButtonState EnumExButtonState.Press){mButtonState EnumExButtonState.PressEnd;return;}}if (OnClick ! null){if (mButtonState EnumExButtonState.PointerDown)mButtonState EnumExButtonState.PointerUp;}}private void Update(){ProcessUpdate();ResponseButtonState();}private void ProcessUpdate(){if (OnDoubleClick ! null) { }if (OnPressBegin ! null || OnPress ! null || OnPressEnd ! null){if (mButtonState EnumExButtonState.PointerDown){if (Time.time - mPointerDownTime mPressBeginTime){mButtonState EnumExButtonState.PressBegin;mPressCacheTime 0f;return;}}}if (OnClick ! null){if (mButtonState EnumExButtonState.PointerUp){if (OnDoubleClick ! null){if (Time.time - mPointerDownTime mDoubleClickInterval)mButtonState EnumExButtonState.Click;}else{mButtonState EnumExButtonState.Click;}}}}private void ResponseButtonState(){switch (mButtonState){case EnumExButtonState.None:break;case EnumExButtonState.Click:OnClick?.Invoke();mButtonState EnumExButtonState.None;break;case EnumExButtonState.DoubleClick:OnDoubleClick?.Invoke();mButtonState EnumExButtonState.None;break;case EnumExButtonState.PressBegin:OnPressBegin?.Invoke();mButtonState EnumExButtonState.Press;break;case EnumExButtonState.Press:{mPressCacheTime Time.deltaTime;if (mPressCacheTime mPressIntervalTime){mPressCacheTime mPressCacheTime - mPressIntervalTime;OnPress?.Invoke();}break;}case EnumExButtonState.PressEnd:OnPressEnd?.Invoke();mButtonState EnumExButtonState.None;break;default:break;}} }ExButton组件功能的拓展需要继承自Button类并且重写OnPointerDown、OnPointerUp方法这里根据需求只重写了OnPointerDown、OnPointerUp方法大家可以根据自己的需求重写Selectable下的方法。根据需求我们要实现点击、双击、长按、长按开始、长按结束事件的回调所以在代码中我们提供了OnClick、OnDoubleClick、OnPressBegin、OnPress、OnPressEnd回调方法。 public Action OnClick { get; set; } public Action OnDoubleClick { get; set; } public Action OnPressBegin { get; set; } public Action OnPress { get; set; } public Action OnPressEnd { get; set; } 逻辑采用了单状态机来实现在OnPointerDown、OnPointerUp、Update方法中去改变成员mButtonState的状态最终在ResponseButtonState方法中根据mButtonState的状态去进行事件的回调。 在逻辑中也进行了事件回调的优化处理当OnClick、OnDoubleClick、OnPressBegin、OnPress、OnPressEnd所有回调都被注册时会优先处理OnDoubleClick其次是OnPressBegin、OnPress、OnPressEnd最后才是OnClick。例如当OnDoubleClick未被注册时则会跳过OnDoubleClick对应的逻辑判断提前处理并响应其他回调事件。 base.OnPointerDown、base.OnPointerUp public override void OnPointerDown(PointerEventData eventData) {base.OnPointerDown(eventData); }public override void OnPointerUp(PointerEventData eventData) {base.OnPointerUp(eventData); } 在重写OnPointerDown、OnPointerUp后如需保留原有功能需要调用base.OnPointerDown、base.OnPointerUp方法。只有调用基类方法按钮的按下颜色改变才会有效果当然这些基类方法也可以在别处调用。 官方文档连接 Selectable文档连接https://docs.unity3d.com/Packages/com.unity.ugui2.0/manual/script-Selectable.html Selectable类API文档连接https://docs.unity3d.com/Packages/com.unity.ugui2.0/api/UnityEngine.UI.Selectable.html?qselectable
http://www.pierceye.com/news/50356/

相关文章:

  • 相亲网站怎么做的宁德市公共资源交易中心
  • 正宗营销型网站建设无锡网络推广运营公司
  • 网站服务器崩溃怎么办wordpress充值卡插件
  • 网站开发的工资网站开发的合同范本
  • 标签化网站网站服务器需要多少钱
  • 猪八戒网站开发网络营销网站建设哪家好
  • 广东深圳住房和城乡建设部网站wordpress 用ip访问不了
  • 河北恒山建设集团网站wordpress mu 2017
  • 输入网站查看空间erp企业管理系统手机版
  • 湖南网站建设的公司排名网站后台可视化编辑
  • 石家庄站到正定机场北京建筑设计院加盟
  • 网站设计模板素材江宁网站建设多少钱
  • 网站开发与维护价格百度广告联盟平台官网下载
  • 网站建设需要学什么证闲鱼怎么做钓鱼网站
  • 网站建设比较网站首页seo怎么做
  • 针对网站开发软件 代替手动wordpress 三站合一
  • 我要建网站网站设计主色学校
  • 网站设计存在的不足网站的优化与推广
  • 网络公司给我做网站我有没有源代码版权吗?什么网站可以帮人做ppt赚钱
  • 河南网站推广多少钱wordpress米表域名展
  • 济宁住房和城乡建设厅网站海南省建设工程质量监督网站
  • 网站虚拟空间过期wordpress flash加载
  • jq网站模板wordpress相册投票插件
  • 博客网站登录wordpress建站产品导入不同目录
  • wordpress如何建立网站泉州网站建设方案详细
  • 个人备案网站内不能出现什么内容雄县哪里有建设网站的
  • 网站建设和运维单位责任网址
  • 网站栏目按扭鲜花销售网站模板
  • 做网站图片和文字字体侵权网页设计导航条怎么做
  • 北京海大网智网站建设制作公司教师网络培训心得体会