| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 系统运维 -> 游戏开发中的各种角色浅析 -> 正文阅读 |
|
|
[系统运维]游戏开发中的各种角色浅析 |
|
在以往的游戏开发中,我们往往需要处理很多角色,围绕着这些角色的组织形式,解耦等话题,出现了很多复合设计模式。例如:pureMVC,MVVM ,MVC 等等。对于这些设计模式,都是有利有弊,有他自己的使用场景。不过我们要透过表象看本质,就需要抛开这些设计模式,分析游戏中的各种角色,以及他们的相互作用关系。才能最终找到一种属于自己的使用模式。 一 数据1. 数据的分类数据是游戏中不可或缺的部分,比如单机游戏的本地存档数据,网络游戏从服务器获取的远程存档数据,这两种统称为存档数据;再有就是配置表数据,常量数据等等。不管你是什么数据,这里我统统称之为数据。
2. 数据的获取方式数据的获取方式由数据的存放位置决定,如果存放在服务器,需要通过网络接口完成存取,如果存在本地,需要调用本地存取接口完成。如果是配置文件,那需要自己加载后管理。这些操作都可以封装在对应的管理器中实现统一的接口提供外部使用。
3. 数据的管理对于存档数据,如果是用户数据,会常驻内存,可以存放在一个单例中。如果是某个模块单独的数据,可以由各个模块的数据管理器自己管理。配置数据自然是通过配置数据的读取管理器统一调用。 我个人的习惯是将这些数据整理好之后再通过数据管理器提供给界面使用。整理后的结构大多是一个树状结构。数据管理器是一个模块的根模型。
二 显示作用:
三 控制器作用:
四 UI管理UI管理顾名思义,管理ui的弹出和关闭;这里的ui是各种弹窗的统称,不管是几级界面,也不管你是tip还是toast。都归于一个ui管理器管理。
五 事件事件是模块内部,模块与模块之间进行通信的主要手段。
六 模块针对模块开发,不仅可以使项目的目录结构清晰,而且对新人也比较友好。当模块与模块之间通信时遵循几个原则
七 结语在我看来,游戏中最重要的角色为以上几种。对于一些设计模式给成的Command,Mediator,Proxy之类的。我感觉没有必要。我的原则是涉及的角色尽量少,然后也能够达到解耦的目的就好。比如控制器调用UIManager弹出界面这件事情,是可以写一个中介者来管理所有的UI。但是对于体量不大的游戏其实没那个必要,所以也就不是必须的存在。如果非要给我这种使用方式向某个设计模式上靠的话,我感觉更像是MVVM。存档数据和配置数据为模型,数据为ViewModel;View都是通过使用ViewModel组织好的数据,完成各种需求。不推荐使用PureMVC。 |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/5 5:57:13- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |