Unity

Posted SouthBegonia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity相关的知识,希望对你有一定的参考价值。

ButtonEx 组件,一个对 UnityEngine.UI.Button Unity的扩展。实现了除onClick外的常用按钮交互事件,并定制了Inspector

ButtonEx 组件,一个对 UnityEngine.UI.Button Unity的扩展。实现了除onClick外的常用按钮交互事件,并定制了Inspector

项目结构:

  • Assets
    • ButtonEx
      • ButtonEx.cs //核心
      • Editor
        • ButtonExEditor.cs //核心
      • Demo //演示用的

项目地址:ButtonEx - SouthBegonia

设计目的

1.实现按钮的其他交互逻辑

UnityEngine.UI.Button只实现了onCLick点击事件,而实际项目中,按下、按起、长按、双击等交互逻辑也会用到。解决办法:

  • ButtonEx继承UnityEngine.UI.ButtonUnityEngine.UI.Selectable后,实现 IPointerDownHandler等几个接口和长按逻辑即可

2.实现按钮的业务逻辑

通常点击按钮后,可能要播放按钮的点击音效、动效。为避免程序在各业务代码内编写重复代码,也方便公开相关参数(如播放音效的参数,动效参数)给非程序人员调控,因此相关业务逻辑完全可以放在ButtonEx内。解决办法(源码内就不具体编写了):

  • 可以在ButtonEx.Awake()时开启onClick的监听:onClick.AddListener(PlaySound()),但要注意是否会被其他代码RemoveAllListeners()
  • 也可以在m_OnClick.Invoke()执行前自主调用PlaySound()

3.ButtonEx的引入,不能影响原有Button

若不是开坑初期就引入ButtonEx,就避免不了此问题:原有代码内就有大量对Button的使用,若新加的ButtonEx不是在Button上实现的,就得全部替换代码,还得告知其他程序人员该用ButtonEx或是Button,很大的工作量。解决办法:

  • ButtonEx选择继承自UnityEngine.UI.Button,而不是UnityEngine.UI.Selectable,但这么做的话就还得编写ButtonEx的Inspector脚本(狗蛋:这就是代价)

4.定制ButtonEx的Inspector页面

若是不定制Inspector页面,虽然也可以根据Attributes属性做些美化(也不是不能用),但考虑到未来可能有更多扩展,也为了方便非程序人员的直观使用,因此可以特殊定制其Inspector页面。解决办法:

  • 因为ButtonEx是继承UnityEngine,UI.Button的,则其扩展脚本ButtonExEditor就继承自SelectableEditor进行定制

现有功能

  • 常用按钮交互事件
    • 按下(onDown)、按起(onUp)、进入(onEnter)、移出(onExit)、长按(onLongClick)、双击(onDoubleClick
  • Editor模式下Button无损转换为ButtonEx(开关在组件右上角三个点里)

参考文章

以上是关于Unity的主要内容,如果未能解决你的问题,请参考以下文章

unity和unity3D的区别

Unity3D资源文件 ③ ( Unity 资源包简介 | 导出 Unity 资源包 | 导出资源包的包含依赖选项 | 导入 Unity 资源包 | Unity 资源商店 )

Unity前景如何?现在unity还能找到工作吗?

Unity学习笔记:unity介绍

unity游戏unity 攻击范围绘制圆圈怎么做

unity如何用脚本刷新窗口