一、Doozy界面
二、功能模块
2.1 UI
2.1.1 UIButton
你可以把他想象为UGUI Button的拓展。
因为它是基于Button,且这个组件有大量原本需要我们手动实现的事件:
鼠标移入、移出、长按、右键按下、双击、选中状态、取消选中状态。。。(这统称为“行为”)
并且剧透一下,UIButton里面每个上述行为下,还有对应的动画库!意味着我们手动点点,就能让这个按钮移入时变大,移出恢复常态,点击时...
还有UIButton每个行为下都有一个UIAction事件系统,这个事件库不仅可以实现上述行为,还能实现简单配置,点下时播放声音库中的一个声音等等
2.1.2 UICanvas
它类似UGUI的Canvas,它的样子如下图所示。
它的作用是:
- 提供了API,可让你通过代码快捷的找到这个UICanvas,
- 并且当有两个相同名字的UICanvas,它会报错,让我们很容易的知道,是不是多实例化了一个UICanvas呢
- 我们的DoozyUI的大多数UI组件,都是放在它底下的。
2.1.3 UIDrawer
这个翻译过来是抽屉的意思,刚看到这个组件时我也很懵,不过讲一个例子就瞬间懂它了:
即手机QQ从左向右滑出现个人信息的效果,可以用它来实现~
按住鼠标左键下拉,手机手指下滑。
可以利用Unity Event事件UIDrawer.Toggle控制滑动列表开关。
控制右方向白色箭头,关闭则不显示。
2.1.4 UIPopup
它起的作用就是强制交互,在我们:
- 通关结束,必须点 “victory” 的界面、
- 进入下一关卡的确认界面,比如选择进入,或者返回休息的界面、
- 提交成绩的界面,弹出提交或者返回继续完善。。。
都可以使用。
它自生成UI层级就是10000,叠加于任何UI之上,强制交互。
2.1.5 UIToggle
UIToggle,类似 Unity 的 Toggle,
不同的是多了一些事件,比如鼠标移入移出、选择与取消选择。
2.1.6 UIView
它是一个UI模块的根物体组件,UIView可实现这个UI模块的显示、隐藏等等效果,
并提供了显示、隐藏动画、
设置图结点之前需要全部Hide
提供了显示隐藏开始、进行中、完成的事件,及进度回调等等有用的事件。
2.2 Listeners(可以在同一物体上添加多个监听器处理不同事件)
2.2.1 Game Event Listener
GameEvent的监听器,配合GameEvents使用,当事件触发时,发送字符串消息,Game Event Listener接收到同一字符串时执行该字符串下的方法。可创建多个监听器使用。
2.2.2 UIButton Listener
当绑定的按钮触发Trigger Action事件时,调用Event方法。按钮绑定在创建按钮时设置完成。
2.2.3 UIDrawer Listener
当绑定的列表滑动触发Trigger Action事件时,调用Event方法。列表绑定在创建列表时设置完成。
2.2.4 UIView Listener
当绑定的视图触发Trigger Action事件时,调用Event方法。视图绑定在创建视图时设置完成。
2.3 Managers
2.3.1 Game Event Manager
该组件作用:
该组件我们不用管,只需要了解。该组件是DoozyUI自动生成的。
Game Event Manager包含针对系统事件的预定义操作。 如果发送的游戏事件(game event)是系统事件(system event),则触发其预定义的动作。 如果游戏事件字符串包含在SystemGameEvent枚举值中,则将其视为系统事件。
SystemGameEvent枚举值:
ApplicationQuit – Exits play mode (if in editor) or quits the application if in build mode
Back – Triggers the ‘Back’ button system function
我们唯一用到的地方,可能是:
DoozyUI的控制面板,Debug选项卡打开Game Event Manager 选项。
当执行GameEvent时,就能在Console里看到哪个物体执行了什么GameEvent了。
2.3.2 UIPopup Manager
该组件是DoozyUI自动生成的。
2.4 Input
2.4.1 Back Button
该组件是DoozyUI自动生成的。
2.4.2 Key To Action
通过按键控制Actions事件触发。
2.4.3 Key To Game Event
通过按键控制发送的字符串消息事件触发。
2.5 Touchy
2.5.1 Gesture Listener(手势监听)
2.5.2 Touch Detector
该组件是DoozyUI自动生成的。
2.6 Themes
2.6.1 Targets
2.6.2 Themes Manager(主题)
该组件是DoozyUI自动生成的。
2.7 Soundy
2.7.1 Soundy Manager
该组件是DoozyUI自动生成的。
2.8 SceneManagement
2.8.1 Scene Director
2.8.2 Scene Loader
2.9 Progress
2.9.1 Targets
创建动画器赋值,Progress的值0-1控制控制的进度0-1
2.9.2 Progressor
设置值:
2.9.3 Progressor Grop
2.10 Orientation
2.10.1 Orientation Detector
2.11 Nody
2.11.1 Graph Controller
创建图后需要创建Graph Controller来控制图结点的编辑,是图结点的控制器。
2.11.2 Nody 图结点功能介绍
2.11.2.1 UINode
2.11.2.2 Game Event
2.11.2.3 Sound
2.11.2.4 SubGraph
2.11.2.5 Navigation—Back Button
2.11.2.6 Navigation—Portal
2.11.2.7 Navigation—Switch Back
2.11.2.8 Navigation—UIDrawer
2.11.2.9 Scene Management—Activate Loaded Scenes
2.11.2.10 Scene Management—Load Scene
2.11.2.10 Scene Management—Unload Scene
2.11.2.11 Syetem—Application Quit
2.11.2.12 Syetem—Random
2.11.2.13 Syetem—TimeScale
2.11.2.14 Syetem—Wait
2.11.2.15 Theme
2.12 Layouts
2.12.1 Radial Layout
创建在MasterCanvas下。
三、功能组件讲解
3.1 UIAction介绍:DoozyUI的事件系统
UIAction是一个属性,也是一个集合,它为我们提供了声音、粒子特效、动画状态机、游戏、UnityEvent的事件注册接口。
我们可以在这些Event里面注册我们的事件、完成对应的操作。
UIAction被定义在DoozyUI的众多组件的众多行为里,比如:UIButton、UIView、UIDrawer组件的行为下。
UIAction事件说明 :
1、Sound
音频按照声源Sound Source的不同,分为了下面三种模式:
Soundy模式:从内置音乐库配置声音,无需额外操作。
AudioClip模式:需配置AudioClip、输出的Audio Mixer Group。
Master Audio模式:使用MasterAudio插件播放声音。
a、Soundy模式
Database Name:数据库名称。
还记得我们上节讲的控制面板中的数据库嘛?对的,这儿选择的就是你的数据库。Example Clicks这一条就是一个数据库。我们可以增删改数据库、设置数据库中每条数据的名称、对应着的音频。现在DoozyUI便捷的功能开始体现出来了~
该模式因为包含了大量的声音库,因此比较适合直接从中选取需要的UI动画音乐;
或者将你们项目中经常使用的UI音乐放进去,统一使用。
SoundName:选择应该数据库中哪条音频。
浅色的Soundy:点击可快速打开控制面板,转到音频选项卡。是一个快捷按钮。
现在,设置完毕,我们可以运行点击一下这个Button,听听效果了~
b、Audio Clip
Audio Clip:要播放的音频
Output AudioMixerGroup:用哪个AudioMixerGroup来播放
c、Master Audio
2、Effect
粒子系统。分为了两种模式:开始播放、结束播放
Play/Stop模式:
播放/停止播放 该粒子特效。
3、Animators
控制状态机的参数。
使用方法:
挂载上你要控制的状态机。
若没有更新出下方参数数据,重启一下Unity就好。
4、Game Events
DoozyUI也提供了一套消息传递系统,一端发送消息,一端接收消息并执行相关操作。
使用方法如下:
UIAction发送事件
执行此操作时发送的游戏事件列表。游戏事件是在系统中传递的字符串值。
Game Event Listener监听消息
该组件创建方法:Doozy-Listeners-Game Event Listener
GameEventListener监听到了该字段消息,便执行下方定义的方法。
Listen for all GameEvents监听消息
Listen for all GameEvents监听所有事件。无论执行了哪个GameEvents,都会执行下方方法。
5、UnityEvents
该功能类似于Button的Event,绑定你要触发的事件即可。当触发了UIAction时,便会调用。
3.2 API:UIAction(使用代码操作UIAction)
因UIAction被定义在很多组件的很多行为里面,因此本博客以UIButton的点击事件举例,
同理可类推到UIView的打开事件中、UIDrawer的关闭事件中
//是否有Animator事件
bool hasAnimatorEvents = GetComponent<UIButton>().OnClick.OnTrigger.HasAnimatorEvents;
//Animator事件的个数
int animatorEventsCount = GetComponent<UIButton>().OnClick.OnTrigger.AnimatorEventsCount;
//是否有粒子特效事件
bool hasEffect = GetComponent<UIButton>().OnClick.OnTrigger.HasEffect;
//是否有游戏事件
bool hasGameEvents = GetComponent<UIButton>().OnClick.OnTrigger.HasGameEvents;
//是否有声音事件
bool hasSound = GetComponent<UIButton>().OnClick.OnTrigger.HasSound;
//是否有UnityEvent事件
bool hasUnityEvent = GetComponent<UIButton>().OnClick.OnTrigger.HasUnityEvent;
四、控制面板选项卡
4.1、General:常规选项卡
作用:常规选项卡具有控制系统、第三方插件功能开关的作用,以及用来显示DoozyUI的新闻。
Functionality:DoozyUI插件功能的开关
Orientation Detector :方向检测。(如果禁用,检查设备方向的功能将被关闭,UIView组件将不再具有 Target Orientation功能选项)
Auto Disable UI Interactions:自动禁用UI交互。(当DoozyUI正在播放动画时,自动禁用UI交互,这时UI不能交互,建议保持默认开启)
4.2、 Canvases:画布选项卡
它是什么?
Canvases,即UICanvas名字的数据库。它保存着所有UICanvas的预设的名字。
我们可以在这儿增删改查UICanvas的预设名字。
它的作用:
还记得简介里面UICanvas的截图么,里面有Canvas Name这个属性,
当我们设置了Canvases数据库后,我们可以很方便地给Canvas Name选择数据库中的名字。
使用方法:
Sort:将整个数据库从A到Z排序
Refresh:通过添加默认类别,删除空的和重复的条目,对数据库进行排序,并更新类别名称列表,来刷新整个数据库
Reset:通过删除所有条目重置整个数据库
Save:保存
4.3、Views:视图选项卡
它是什么?
跟 Canvases 类似,它是UIView的名字的数据库。
使用方法:
使用方法也跟Canvases类似。不同的是Canvases没有名字的组别,UIView有。
4.4、Buttons、Drawers
使用方法与上述面板类似。
4.5、Popups:弹出窗口选项卡
我们能看到这儿就像键值对一样,前面是UIPopup的名字,后面是对应的UIPopup的预制体。
为什么要这样做呢?
因为我们有代码,可以通过名字获取到这儿对应的预制体,这样我们在代码中只需要实例化一下,修改下这个UIPopup模板就能用啦,不用创建很多预制体。
那你说,修改模板会不会很复杂呢?
no,UIPopup组件提供了有用的接口,设置按钮回调、按钮图片、颜色、背景图片等等非常简单,比如我们在切换场景时,只需要改改文字就好了。
4.6、Soundy:声音选项卡
soundy Datebase:
为Soundy的使用选项,跟上述面板类似,这儿不再重复。
Settings:Soundy的全局设置
Minimum Number of Controllers:Soundy对象池中应可用的最小Soundy控制器数,这些控制器不会被kill掉。
Auto Kill Idle Controllers:如果Soundy控制器设置了可在未使用时自动kill掉,打开该开关,便在空闲时间自动kill掉这些控制器。
Controller Idle Kill Duration:控制器需要闲置x秒,才可被kill掉
Idle Check Interval:检查空闲Soundy控制器,kill掉它们的时间间隔(以秒为单位)
4.7、Touchy:触摸选项卡
Swipe Length:在触摸屏上滑动手指或手写笔的最小移动距离,超出该距离,视为滑动
Long Tap Duration:超出在触摸屏上轻触的持续时间(以秒为单位),则视为长按
4.8、Nody结点:可以创建修改图结点
4.9、Themes
4.10、Settings:新建UI的默认值设置
每个选项卡下,对应着它的默认值设置。当后面博客讲到对应组件时,对进行讲解。
4.11、Debug:组件的全局调试模式
点亮,即可为某个组件类型启用调试模式。
效果:现在执行该组件上的事件,这些行为都会被打印到Console。
作用:当你不知道某组件在何时被哪个代码打开/关闭/调用时,那开启Debug模式,就能在Console里轻松看到调用它的程序在哪了,方便你调试。