天龙客户端的GameManager
看天龙的结构,奇怪为什么这么多直接继承了MonoBehaviour,而不是自己实现一套帧频更新呢,两者利弊都在哪?
从顶层来看看GameManager的单件。
管理了当前的载入的场景(ActiveScene),任务管理器(MissonManager),表数据管理器(TableManager),声音管理器(SoundManager),网络管理器(NetManager),主角数据(PlayerData),其他玩家数据(OtherPlayerData),自动寻路接口(AutoSearchAgent)。这些管理器在后边打算逐个分析下功能与设计。可以看出来他们都是作为MonoBehaviour脚本挂到同一个GameObject上,注意是动态Add上去的。
GameManager在Start时,其实就是载入,但未执行本GameObject的帧循环前,会执行初始化。并检查如果内存如果小于768,或者处理器个数小于2,就认为是低端机,设置成低端机,能自动控制什么呢?此外,会把NPC的刷新时间从0.06秒改成0.09秒。这里他取内存的方式其实挺简单的:SystemInfo.systemMemorySize,不像我现在做的,从Android里取出来,再送到上层,结果其实是一致的。
此类提供了数据加载的功能。维护了一个WWW类型的成员rawWWW,这里不得不吐槽下,命名规范很不统一,有的是m_XXX,有的是XXX,挺乱的,个人还是觉得统一点好。
看看他的数据加载
public void GetRawData(string strPath)
{
base.StartCoroutine(this.GetWWWRawData());
}
[DebuggerHidden]
public IEnumerator GetWWWRawData()
{
... ...
return <GetWWWRawData> c_Iterator;
}
Unity的WWW加载是异步方式,因此需要用请求,然后等待数据返回,其存在成员LoadRawDataFinishDelegate,能在加载完成后支持回调。其实这种协程的方式有待考量,现在我在项目里用的帧刷新,轮询的方式也能满足需求,我这种集中式管理,主要问题在于回调产生的IO与实例化的管理不善,但集中式轮询应该没有大问题。
天龙客户端的GameManager的更多相关文章
- 天龙客户端的ResourceManager
今天培训的时候,Leader针对项目结构讲了很多分层架构的思想,思路,对我而言有很大的助益,学会了将需求分层,或者说先设计出各个层次,然后有需求后落实到对应的层次上,尤其对于刚开始的架构设计阶段,能把 ...
- 炉石传说 C# 开发笔记 (续)
炉石传说山寨的工作一直在进行着,在开发过程中深深体会到,对于业务的理解和整个程序的架构的整理远比开发难得多. 在开发过程中,如果你的模型不合理,不准确,很有可能造成代码的混乱,冗余,难以维护和扩展性比 ...
- MMORPG大型游戏设计与开发(客户端架构 part16 of vegine)
由于近来比较忙碌和有些困倦的原因,所以关于这部分的文章没有及时更新,一句话:让朋友们久等了!今天所讲的是客户端vengine(微引擎)中最后一个部分,就像上节所说,这一部分的内容比较多.可能有些朋友看 ...
- 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付
前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...
- 支持 .NET Core 的 Memcached 客户端 EnyimMemcachedCore
1. 介绍 EnyimMemcachedCore 是一个支持 .NET Core 的 Memcached 客户端,是从 EnyimMemcached 迁移至 .NET Core的,源代码托管在 Git ...
- 消息队列 Kafka 的基本知识及 .NET Core 客户端
前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...
- Socket聊天程序——客户端
写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...
- zookeeper源码分析之三客户端发送请求流程
znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...
随机推荐
- YUV420查表法高效、无失真的转换为RGB32格式
YUV格式有两大类:planar和packed.planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V,这里所讲述的就是这中存储格式的:packed的YUV ...
- 金士顿U盘,群联PS2251-60主控,量产还原教程
还原成一个可移动磁盘教程,只是在"分区设置"中将 "模式=21" 改为 "模式=3" 即可. 1. 打开:"MPALL_F1_90 ...
- JQuery中的extend函数
1.jQuery.fn.extend(object) 扩展 jQuery 元素集来提供新的方法(通常用来制作插件). 例如:增加两个插件方法. jQuery.fn.extend({ check: fu ...
- java与mysql连接
package DBHelper; import java.sql.*; public class Demo { public static void main(String[] args) { St ...
- Azure 删除VHD时报错:There is currently a lease on the blob and no lease ID was specified in the request
可下载:http://clumsyleaf.com/products/cloudxplorer 然后在Accounts中新建一个Account,账号与Key,可在相应的storage Manage A ...
- Centos下mysql数据库备份与恢复的方法
一.mysqldump工具备份 mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具.支持基于InnoDB的热备份.但由于是逻辑备份,所以速度不是很快,适合备份 ...
- VS2010最常用快捷键
1.选择类 F8 当前位置变成选定区域的头/尾(再移动光标或者点鼠标就会选定) Ctrl + F8 当前行变成选定区域的头/尾(再移动上下光标或者点鼠标就会选定多行) CTRL + W 选择当前单词 ...
- css3中变形与动画(一)
css3制作动画的几个属性:变形(transform),过渡(transition)和动画(animation). 首先介绍transform变形. transform英文意思:改变,变形. css3 ...
- 《2016ThoughtWorks技术雷达峰会----变革的原因》
变革的原因 张松 ,ThoughtWorks中国区总经理 首先回顾IT历史,观点如下: 1.在80,90年代,IT作为一个种生产效率的提高工具,主要是把手工的活动自动化.以client se ...
- LCIS(最长公共上升子序列)Vijos1264神秘的咒语
描述 身为拜月教的高级间谍,你的任务总是逼迫你出生入死.比如这一次,拜月教主就派你跟踪赵灵儿一行,潜入试炼窟底. 据说试炼窟底藏着五行法术的最高法术:风神,雷神,雪妖,火神,山神的咒语.为了习得这些法 ...