小眼游戏架构:UI篇:三层架构(UI管理层)

2023-10-08 09:40

本文主要是介绍小眼游戏架构:UI篇:三层架构(UI管理层),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇我们说到UI集合
UI集合最主要的作用就是给UI管理提供关闭多个UI的接口。
这篇就来说说UI管理UI管理主要管理UI集合自动流程,免去了烦人的重复写法。
先看下图:
在这里插入图片描述
流程:加载、打开、关闭、卸载(关闭之后是否需要卸载)

UI分类(分析篇的时候说过):

  1. 主UI1:每个UI集合有且只有一个。会进入自动的关闭打开流程:比如你打开一个UI集合会自动关闭上一个UI集合,你关闭当前UI集合会自动打开上次关闭的UI集合。这时的主UI1的生命周期就是UI集合的生命周期;
  2. 主UI2:每个UI集合有且只有一个。不会进入自动的关闭打开流程,有一些系统UI,你不想它能自动的打开和关闭。比如:提示信息框,断线重连框等等;
  3. 子UI:会加入到当前显示的有主UI1UI集合中。有一个非常特殊的情况就是:有些UI比如来源,任何界面都会打开,所以这个UI可能会是任何界面的子UI。比如:UIA界面打开了来源来源将是UIA子页面;这时又打开了UIB界面UIA界面来源都被关闭,然后你又打开了来源,这时来源将是UIB子页面;这时你又打开了UIC界面UIB界面来源都被关闭了。这个时候如果你按照打开的路径返回的的话,来源会被打开几次?答案是两次:关闭UICUIB会被自动打开同时会打开来源(一次),关闭UIB界面来源也会被关闭,然后自动打开UIA界面同时来源也会被打开(二次);
代码解释如下

打开时:
在这里插入图片描述
打开时如果打开的是一个子UI,那么会直接把他加入到当前最后一个有UI1类型UI集合中去,关闭这个UI集合的时候也会关闭现在加入的UI,为什么要这么做?因为我们页面拆分之前,本来就是一个UI,后面拆分了,但是生命周期肯定还是一样的,所以得保持一致。
关闭时:
在这里插入图片描述
关闭UI时如果是一个主UI那么直接关闭这个UI集合,也就是关闭UI集合里面的所有UI,
如果是一个子UI,就只是单独关闭这个子UI就行了。

UI架构完结散花,后续会有具体的一些案例和优化。

后续会有一些UI方面其他的主题:

  1. 特殊UI系统:新手引导,AVG等等。
  2. 特殊功能:UI组件化,来源功能等等。
  3. 优化:针对一些顽固的系统,比如背包。
Lua的代码环境

因为后面的章节是具体的实现,所以先把环境建立起来:
在这里插入图片描述
上图说明:我们将lua脚本从LuaFrameWork里面抽取出来,这样我们后期如果不在使用LuaFrameWork的话,改用其他框架,也不会产生很大的影响。
在这里插入图片描述
上图说明:目前的Lua代码的组织划分,后期会根据项目慢慢调整。
在这里插入图片描述
根节点信息的初始化,也就是UI的环境必须在游戏开始就完成。
环境的配置完成!

项目地址:https://github.com/xiaoyanxiansheng/SmallEyeGame

这篇关于小眼游戏架构:UI篇:三层架构(UI管理层)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/164392

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

在 PyQt 加载 UI 三种常见方法

《在PyQt加载UI三种常见方法》在PyQt中,加载UI文件通常指的是使用QtDesigner设计的.ui文件,并将其转换为Python代码,以便在PyQt应用程序中使用,这篇文章给大家介绍在... 目录方法一:使用 uic 模块动态加载 (不推荐用于大型项目)方法二:将 UI 文件编译为 python 模

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element