现在的商业游戏开发,业务层绝大多数都是在Lua层实现。UI作为业务一哥,首当其冲。上一篇文章我们讲了UI框架在C#层的封装,这篇文章核心介绍下在Lua层的封装。还有之前遗留的几个问题数据层和显示层的抽离,还有复用组件这里都做一个介绍。马鑫:Unity游戏开发笔记-UI框架​zhuanlan.zhihu.com

为了理清楚思路,我们这里用一个简单的图来画一下,我们需要做哪些东西,以及为什么要这么做。

通过简单的不知什么图的图来理了一个简单思路,得出的结论是有很多东西需要写。显示层的基类也就是类似UIBase

这里有一点图上没有提到,就是对于继承UIBase的分类。我先去网上偷几张商业游戏的图片我们来看看现在游戏中的需要我们区分的类型有哪些。这里我挑选了老东家的《天使纪元》来做一个简单的说明。图片来自于百度,侵删。

第一类就是上面这中,普通的界面,他独立存在,不依赖与其他功能可以直接打开的,那么这类界面我们单独分类,独立出来基类继承UIBase假定为UIBaseNormal类。

第二类界面就是上面这种,由多个独立的界面的构成,但是又依赖与某一个功能的打开。如上图的贵族认证界面就是依赖与VIP贵族的打开。这类界面我们也单独分类,独立基类继承自UIBase假定名字为UIBaseToggleWind类。这里有人可能有疑问,为什么这里还是按照上面的逻辑去直接写不就好了,点一个Toggle我新打开一个界面。理论上可以这样写,但是程序员耐不住策划需求啊~万一哪天策划说贵族的这几个页签我不想放在这里了,我想放在充值界面,贵族界面我想显示签到页签。你可能就会被劝退,因为设计层面没有支持到。你只能慢慢挪动你的代码。所以我们的UI框架需要支持父节点和子节点的绑定,当然这个绑定可以让策划走配置,你想放哪儿就放哪儿。

第三类就是上图我们箭头指向的,不独立但是可复用的Object。这类框大家都知道,游戏中显示道具信息的通用框,随处可见。对这类型的框,我们独立也要封装,同样继承UIBase我们可以叫他UIBaseSlot。

3.上面展开思路有点多,那么第三点就是需要一个显示管理层,管理各个模块的创建,显示等等,功能类似C#层的UIManager,但是明显C#的基础接口设计已经不能满足我们的需求了,那就++++++。

4.数据层的基类 取名DataBase好了 这里要写一点经验值的东西了,我们游戏中的数据变更一般选择角色后,切换场景时,断线重连,注销账号等地方,所以我们设计数据的基类一定要独立出来这几个接口。

5 数据管理层 统一管理继承DataBase的所有数据管理类。取名DataManager好了~Emmm 词穷啊~

6 中间层事件管理的封装,EventSystem是解耦神器,这个中间件后续的文章,单独独立出来一篇介绍。Todo~

7 忽然想起来一个很重要的点,就是业务层Lua基础代码生成工具,重复性代码还是需要让工具来帮你做的~

思路大体理的差不多了~下面我们开始写~

Tobe Continue.........

本篇持续更新~

后续会传一些关键的代码~毕竟我也还没写呢~233333 嘴炮王者

lua搭建ui_Unity游戏开发笔记-UI框架之Lua层封装-上篇相关推荐

  1. lua搭建ui_构建类魔兽UI插件的lua安全沙箱

    魔兽的UI插件结构 1.使用lua+XML作为配置 分析:XML虽然人机交互很好,但其实没有几个UI是真正用纯XML写的,大多还是用编辑器比较方便.速度很慢,但尚不清楚魔兽代码里是否进行优化 2. I ...

  2. unity 通过resouce加载图片_Unity游戏开发笔记-资源管理之资源加载

    资源加载是游戏中非常重要也非常繁琐的的一部分,不合理的资源管理,必定回给游戏的内存带来非常大的压力,尤其是一些重度游戏,不但资源特别多,引用关系特别复杂.维护一个不会内存泄漏而且加载效率高的资源加载框 ...

  3. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  4. [置顶]       【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7318264 作者:毛星云    邮箱: h ...

  5. 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 本篇文章里,我们首先对Direct3D之中固定功能流水线中的 ...

  6. 【Visual C++】游戏开发笔记三十三 浅墨DirectX提高班之二 化腐朽为神奇:DirectX初始化四步曲

    这篇文章里,我们将迈出精通DirectX的第一步,先了解典型Direct3D程序的书写流程,然后学习COM接口的对象的一些思想,然后按照"四步曲"的思路,系统地学习DirectX的 ...

  7. 【Visual C++】游戏开发笔记三十二 浅墨DirectX提高班之一 DirectX大局观认知篇

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:  http://blog.csdn.net/zhmxy555/article/details/8172615 作者:毛星云(浅 ...

  8. 【Visual C++】游戏开发笔记二十五 最简化的DirectX开发环境的配置

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7672101 作者:毛星云    邮箱: h ...

  9. 【Visual C++】游戏开发笔记二十五 最简化的DirectX 11开发环境的配置

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7672101 作者:毛星云 邮箱: happ ...

最新文章

  1. 2020《图像分割》从入坑到出坑指南
  2. 2435: [Noi2011]道路修建
  3. 缓存DNS域名解析服务器的制作方法
  4. 工程优化作业——成功失败法和黄金分割法
  5. 测试Mybatis时事务自动回滚,无法完成增删改
  6. 关于std:auto_ptr
  7. 第一节:框架前期准备篇之Log4Net日志详解
  8. pytorch utils.data.DataLoader
  9. Linux之ssh无密码登录
  10. ASP.NET FileUpload用法
  11. 工作小记20201017-hive或inceptor相关
  12. 全国计算机三级数据库技术
  13. 信号预处理电路(三角波和正弦波转换成方波)
  14. WPS文字目录怎么做?目录制作的三种方法
  15. 2022年《社区护理学》 试题及答案
  16. 相律公式表达式_第六章 相平衡主要公式及其适用条件
  17. linux服务器如何识别移动硬盘,Linux服务器如何识别移动硬盘?
  18. 3、微信小程序-通信
  19. 浏览器调试技巧(debugger调试)
  20. Java 编程技巧之样板代码

热门文章

  1. 区块链研究热点和趋势分析
  2. redis-JedisPoolConfig配置
  3. 10个高频Spring Boot
  4. IT人员的核心竞争力是什么?
  5. 网易云Web安全工程师课程分享2——第二章 常见Web漏洞解析
  6. 原生js的图片时钟实现
  7. 商业银行业务外包的分类有哪些?
  8. 简易却不失华丽 [进销存管理](BCB+ACCESS)
  9. utools快速上手心得、给你安利一款国产良心软件uTools工具--uTools 新一代效率工具平台:怎样安装和使用?详细方法?打工人必看、高效工作、提高效率、提高生产力
  10. 二极管IN4001~IN4007参数