0%

Unity UI框架实战

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两个实现接口所调用

image1

Layer

layer的作用是,在程序跑起来后,管理分层用的

基类是UILayer< TScreen>这个abstract类,扩展为PanelUILayer和WindowUILayer两个类,分别管理面板和窗口的层级

动画类

基层:AniComponent类

扩展到:

ScaleScreenAni类(缩放比例大小)

SlideScreenAni类(切换,上下左右)

AnimationView类(具体动画实现,封装DoTween之类)

FadeAni(渐入动画)

事件类

根据具体的逻辑,定义的事件结构

image2

事件类Signals.cs在External文件夹下,定义了事件处理

窗口属性

最基本的接口属性类,分Panel和Window两大类

基类IScreenProperties,扩展IPanelProperties和IWindowProperties,面板和窗口

然后WindowProperties类,扩展CameraProjectionWindowProperties,ConfirmationPopupProperties和PlayerWindowProperties三类,在实现文件夹Screencontrollers下