天龙客户端的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对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...
随机推荐
- oracle11G使用DGbroker创建dg
1.环境: a.主机环境:centos6.5 b.软件环境:oracle 11.2.0.4 c.主机信息: DG1:192.168.100.51(数据库sid:atest) DG2:192.168.1 ...
- x01.Lab.OpenCV: 计算机视觉
横看成岭侧成峰,计算视觉大不同.观看的角度不同,成像自然不同,这对计算机视觉来说,是个大麻烦.但计算机视觉应用如此广泛,却又有不得不研究的理由.指纹机大家都用过吧,这不过是冰山之一角.产品检测,机器人 ...
- android 解决.XML提示ava.lang.NullPointerException at错误后XML没显示
提示错误: java.lang.NullPointerException Exception details are logged in Window > Show View > Erro ...
- canvas作为背景
比如canvas的id是HB, 画好后执行document.body.style.background = "url('"+HB.toDataURL()+"')" ...
- 分享——张南《从Desktop到Mobile的自动化测试实践》
张南在top100summit(14年)上分享了google从Desktop到Mobile的自动化测试实践,这里分享一下 案例简述 随着每年移动用户量的增长,移动网络速度以及覆盖力的增强,移动设备逐年 ...
- 移动测试会Ebay沙龙PPT
Bill Liu --如何让你的测试更敏捷ebay沈斌峰 --Mobile Automation TestingJason Woo -- Full Stack Testing http://teste ...
- POJ2157Maze[DFS !]
Maze Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3818 Accepted: 1208 Description ...
- CF 371B Fox Dividing Cheese[数论]
B. Fox Dividing Cheese time limit per test 1 second memory limit per test 256 megabytes input standa ...
- 计算2的N次方&&计算e
2的N次方 注意:这里在处理的时候并没有用循环来处理,而是用移位的做法. n<<4 就是 n*2^4 ,所以在本例中只需要写 1<<time (time是要求的 ...
- 解决为什么每次打开Eclipse新的workspace需要更新nexus-maven-repository-index问题
解决为什么每次打开Eclipse新的workspace需要更新nexus-maven-repository-index问题 新建一个Eclipse的workspace. 打开Window—>Pr ...