GameUnity 2.0 文档(一) 事件机制
新版本和旧版本一样,有socket事件和内部事件。区别在于,你只要一个监听就可以

消息协议规则:

用类名标记协议的好处是什么? 是利用反射机制来处理每个消息。
程序启动的时候,会读取所有类名,并字典保存,也就是一次反射,消息传递就不会再次反射获取类了,直接 字典中拿取。这是目前最先进的做法
大家看看一个案例

以上代码是 unity 按钮 发送的 三个 通知服务器事件。
发送规则 是: 协议头 + json内容+消息结尾符(固定的)
大家注意看消息协议头。
服务器 相关的如下:

协议定义的字符串 和 服务器类名是一样的。
我们点击去看看:

这是一个 私聊的协议类,客户端发送私聊后,服务器创建 同样的类名,和继承。就可以在这里进行逻辑操作了。
再看一个服务器类:这个类是用来确定开启,或 客户端发送错误的协议,或内部出错,或客户端关闭。

最后,很多人担心服务器性能好不好,在这里,我不想黄婆卖瓜。客户端我全部重写,粘包异常断开等等都封装好了,用户只要写和服务器交互的逻辑通信就ok了。

最后简单的 互动了一次通信并且 先关闭服务器的测试,当然你们何用测试发错消息,或连续发包等,都是完美的。
多元化的 设计,让你也可以用其他语言 开发服务器,客户端是不用改写的。

事件部分就介绍到这里,文章字数限制,没提到的,可以按照 旧版本那样操作。使用过早期版本的,基本不需要改动,就可以继续开发项目了。
下一篇开始,我将陆续讲解 2.0下的 特别组件。带你玩转 大公司核心技术 一键操作。
。。。。。。。。。。。。。。。。。写在最后,和大家一样,白天工作,利用空余时间编写框架,不足之处难免被 人喷,这也是国情。
百度上 零碎的知识很多,但新人往往不能很好的总结组合,导致学了忘,忘了学。最终也 无法深入做一个东西。
我架构框架的目的是,让零碎的知识组合起来,你只要一行代码,就能实现 别人几十行上百行,甚至更多时间研究苦死的代码。
这个社会真大神其实不多,大部分所谓的大神都是 小白层次太低,而被误导出来的大神,而我的自己的目的,是 为了 成为 大神眼里的 大神。
为此 继续完善框架,继续看更深层次的代码。不以低层次夸赞为喜,不易高层次吝啬而恼,船到桥头 我能行。
GameUnity 2.0 文档(一) 事件机制的更多相关文章
- GameUnity 2.0 文档(五) 人工智能之---------------Flocking算法 (聚集,分散,列队 )
AI是游戏的灵魂,是人物的智商,是让玩家觉得游戏是否幼稚的重要判断功能,下面我将介绍国外流行,国内不行的,ai算法. 主要介绍 Flocking 和 Reciprocal Velocity Obs ...
- GameUnity 2.0 文档(三) 纸片人八方向
DirectSprite类 有别于 上篇文档出现的 AnimationSprite类 (从头播放到尾) 这个类根据 path的图,如果是 8*8 64个图 八方向,可以设置长宽和 角度 角度 代表 8 ...
- GameUnity 2.0 文档(二) 纸片人系统
本想快速的 把 之前写的类库,一股脑的 给大家 ,但又觉得,如 msdn那样的 文档,并不能给 初学者 所能接受. 因为 大部分人 对 api 还是比较陌生,也不愿意 去研究和组合. 那么 今天我选用 ...
- GameUnity 2.0 文档(四) 网格+四叉树 最优碰撞检测
在写之前,必须对 前一篇文档补充一下. Camera2DAngle类是 摄像机旋转 2d人物360度,PlayerMove是人物移动. 这两个类 都可以 360 ° 场景旋转人物也跟着旋转. 但不能 ...
- day56 文件 文档处理,事件
前情回顾: 1. 前情回顾 0. 选择器补充 - 属性选择器 - $("[egon]") - $("[type='text']") - $("inpu ...
- jQuery 选择器 筛选器 样式操作 文本操作 属性操作 文档处理 事件 动画效果 插件 each、data、Ajax
jQuery jQuery介绍 1.jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2.jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方 ...
- Beautiful Soup 4.2.0 文档
Beautiful Soup 4.2.0 文档 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方 ...
- vue mand-mobile按2.0文档默认安装的是1.6.8版本
vue mand-mobile按2.0文档默认安装的是1.6.8版本 npm list mand-mobilebigbullmobile@1.0.0 E:\webcode\bigbullmobile` ...
- jQuery文档就绪事件
[jQuery文档就绪事件] 为了防止文档在完全加载(就绪)之前运行 jQuery 代码.如果在文档没有完全加载之前就运行函数,操作可能失败. $(document).ready(function() ...
随机推荐
- 转Delphi中Create(nil),Create(self),Create(Application)区别
Create(nil);//需要自己释放 Create(Self);//当Self释放时自动触发释放 Create(Application);//当Application释放时自动释放 Create( ...
- 2016NEFU集训第n+3场 E - New Reform
Description Berland has n cities connected by m bidirectional roads. No road connects a city to itse ...
- CreateCompatibleBitmap 需要注意的问题
不要使用CreateCompatibleDC得到的内存DC作为其参数,应使用真实DC,否则图片不能显示
- updateMany
db.tblDaily.updateMany( {"Comments.ViewCount":0}, {$addToSet:{"Comments.$.CommentDate ...
- chapter9_1 协同程序
协同程序与线程差不多,也就是一条执行序列:有自己独立的栈.局部变量.指令指针,以及和其他协同程序共享的全局变量和其他大部分东西. 两者区别在于:一个多线程的程序可以同时运行几个线程,而协同程序却需要彼 ...
- iOS中的项目新特性页面的处理
一般项目中都会出现新特性页面,比如第一次使用应用的时候,或者在应用设置里查看新特性的时候会出现. 这里,选择新建一个专门处理项目新特性的控制器,来完成功能. 首先是 NewFeaturesViewCo ...
- 48、tensorflow入门二,线性模型的拟合
import tensorflow as tf import numpy as np#生成2维的100个0-1的随机数 x_data = np.float32(np.random.rand(2,100 ...
- vi 操作技巧
输入模式的操作Home光标到行首End 光标到行尾Page Up和Page Down上下翻页Delect删除光标位置的字符 删除操作(命令模式使用)x删除光标处的单个字符dd删除光标所在行dw删除当前 ...
- where条件的lambda转化为sql语句
网上找的源码,但是博主说有bug 让自己调试.这个是我经过多次修改后的代码,可以直接用 public static class LambdaToSqlHelper { #region 基础方法 #re ...
- SQL Server 存储过程进行分页查询
CREATE PROCEDURE prcPageResult -- 获得某一页的数据 -- @currPage INT = 1 , --当前页页码 (即Top currPage) @showColum ...