【Unity游戏框架搭建】一、整理框架思路

TeddyFrameWork

Posted by Zero on August 19, 2019

框架学习初始化

架构是一个约定,一个规则,一个大家都懂得遵守的共识。 那这是什么样的约定、什么样的规则、什么样的共识呢?

个人理解的框架: 资源管理、网络通信(协议)、UI框架、事件系统、场景管理、热更新 等一些服务于业务的底层架构

  1. 做了那么久的业务开发,感觉到了瓶颈,需要学习一点更高级的东西,才能进步!!
  2. 工作一段时间,需要整理一下,把别人的东西,融入自己的知识体系,才能化为己用。
  3. 接下来一段时间,我要把现在游戏的框架抽象出来,整理出一套简洁的框架,供大家和自己学习使用。

框架概述

  • 消息管理(C#使用委托,Lua层实现事件系统)
  • 网络层框架(Socket + Protobuf )
  • 资源管理(Unity 5.x 的 AssetBundle 方案)
  • 热更新
  • UI框架(UGUI + MVC)
  • 表格数据(Lua表)
  • 多语言
  • 一键生成、定时构建(jenkins)

框架细节

消息管理

  1. 为什么要有消息系统呢?

    解耦合

    • 举个例子,比如原始时代,你要告诉隔壁老王,下雨了该收衣服了,你就要跑到隔壁,拿到老王这个对象,才能当面告诉他,让他处理;
    • 现在,有了手机,就可以不管老王长啥样?你可以发个消息告诉他,他手机收到这个消息,就可以做对应处理(收衣服)了。

资源管理:

包括资源加载/卸载,音频、模型、纹理等

有了规范就可以做工具检查,从源头到打包

  1. 资源导入检查(AssetPostprocessor)
  2. 资源打包检查

国际化/本地化:

很多游戏都会有海外版,国内版,各个国家的版本,如何进行切换/翻译?(我的框架未来会提供)。

日志模块:

我的框架未来会提供错误日志。

数据设计:

书中指的是设计数据库表。在游戏框架中是指提供给客户端使用的数据结构定义, 包括何种结构定义玩家的数据信息,策划表结构的定义等等。 好的数据结构定义 + 烂的代码质量 » 坏的数据结构定义 + 好的代码质量。

安全性:

资源如何加密,如何防破解,防反编译,安全数据检查,服务器验证等等。

可伸缩性:

可伸缩性是指满足未来需求的能力,包括程序的可扩展性,用户量增长时系统的策略等等。

互用性:

如果预计这个系统会与其他软件或硬件共享数据或资源,架构应该描述如何完成这一任务。

容错性:

举个例子:当界面跳转时,系统不可以接受输入(我的框架不提供)。