UI框架实战
前言
按理来说,个人开发应该直接找个轮椅用,去大厂大螺丝,应该有现成的用。但这个项目是手搓,最基本的那种,用来熟悉一下框架大概需要实现些什么,也是拖UI的底层基础。
UI框架主要实现UILayer作为基类,分别实现Panel(面板)和Window(窗口、弹窗)层,配套搭配对应的PanelController和WindowController实现逻辑和显示的分离。
通过UIFrame对外部暴露统一开启关闭界面等接口,在显示上合理的划分好节点,做好层级遮挡。
对于Window实现队列和栈进行弹出的管理,Panel则不用。
支持界面的传参(Properties类),搭配动画组件和事件系统,形成完整健全的UI框架。
项目地址: 传送门, 演示视频在DEMO文件夹下。
框架的构建和关系
UIFramework是核心框架,UIFramework example是实现,主要看前者
其中核心类关系大概是:Controller,layer,动画,事件,和一些窗口属性
代码自己看,这里只归纳一下大概的框架结构
Controller
也就是最核心的两个控制器
PanelController(面板)和WindowlController(窗口、弹窗),
WindowlController:带有队列和历史记录,方便管理弹出。
PanelController:则不用记录,主要是用来显示小地图,左上角个人头像之类的面板。
在UIScreenController里定义了基础接口IScreenController,其中被IWindowController和IPanelController两个实现接口所调用
Layer
layer的作用是,在程序跑起来后,管理分层用的
基类是UILayer< TScreen>这个abstract类,扩展为PanelUILayer和WindowUILayer两个类,分别管理面板和窗口的层级
动画类
基层:AniComponent类
扩展到:
ScaleScreenAni类(缩放比例大小)
SlideScreenAni类(切换,上下左右)
AnimationView类(具体动画实现,封装DoTween之类)
FadeAni(渐入动画)
事件类
根据具体的逻辑,定义的事件结构
事件类Signals.cs在External文件夹下,定义了事件处理
窗口属性
最基本的接口属性类,分Panel和Window两大类
基类IScreenProperties,扩展IPanelProperties和IWindowProperties,面板和窗口
然后WindowProperties类,扩展CameraProjectionWindowProperties,ConfirmationPopupProperties和PlayerWindowProperties三类,在实现文件夹Screencontrollers下