流程之间不允许互相访问,流程之间应该是相对隔离的,仅允许在进入或者退出流程时判断上一个流程或者下一个流程的类型来执行不同的逻辑.
流程切换时仅会停止对旧流程的更新,启用新流程的更新,不会销毁任何流程.
逻辑场景切换时会销毁旧逻辑场景以及此场景的所有流程,加载并初始化新逻辑场景.
一个逻辑场景一般会使用若干个资源场景,并且根据流程切换资源场景显示.
其实主要作用就是区分不同游戏状态,逻辑隔离,不同逻辑之间尽量不会有耦合.
LayoutSystem:前身是C写的UI框架,C从opengl开始,封装UI,隐藏底层具体实现,只需要上层关心游戏界面逻辑即可.从C转到unity后,这部分也只是把底层unity已经实现的部分替换掉,上层基本没多大变化.
MovableObject:字面意思就是可移动物体,也就是游戏中所有需要移动或者具有位置属性的物体的基类.
ObjectPool:物体池,与ClassPool的区别就是,这个池里存的是GameObject,ClassPool里存的是类对象.
也就是所有从磁盘预设实例化出来的GameObject都会存在这个池里,除非指定了销毁时是真正销毁,否则都是默认回收存起来.
ResouceManager:资源管理器,统一了从AssetBundle和Resources加载的方式,使上层只需要知道加载了某个资源,而不需要具体关心需要从哪儿加载,从哪儿加载是一开始读取配置文件就已经决定了的.一般情况下编辑器开发环境下从Resources加载,打包后从AssetBundle加载.也可以在编辑器开发环境下测试从AssetBundle加载.
Socket:网络部分.自定义的通信协议.虽然现在有很多成熟的商业序列化库用来进行网络通信,但是我还是从我自己实际情况触发,写一套自己的序列化通信协议.毕竟也不难,写出来效率也不低,优化也可以由自己完全掌握.
以上就是Frame部分的架构介绍,虽然算不上有多好,但是总归是自己在这些年不断的摸索中总结出来自己可用的一套结构.从字数上也看得出,其中有两个比较重要的部分,CommandSystem和GameScene,大部分功能都需要依赖这两个系统来实现.还有一个比较重要,Component,这三个部分相辅相成,撑起了大部分的客户端功能.
推荐阅读
- 幼儿园教育目标是什么 幼儿园教育目标有哪些
- 固定挡烟垂壁是什么
- 梅岭三章中的修辞手法 梅岭三章中的修辞手法是什么
- 二一之间定春秋打一最佳生肖 二一之间定春秋是什么生肖
- hankook是什么牌子的轮胎
- 女人吃百香果的危害 百香果是什么
- 云舒云卷的全句是什么 坐看云舒云卷完整句子
- 流体介质是什么意思 介质是什么意思
- 苍盛啥意思 苍是什么意思
- g开头的列车是什么车