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() ...
随机推荐
- Date Math SimpleDateFormat 类
Date 和 SimpleDateFormat /* Date 日期类 许多方法都被Calendar取代了 Date() 获取当前时间 使用概率最高 Calendar 类用常量获取当前时间 一般很少 ...
- Android RIL Log
转载: 要调试 RIL,最好的方法就是打开 radio的log: $ adb logcat -b radio 最好加上 log语法亮度工具coloredlogcat.py ,一些常见的LOG TAG要 ...
- MySQL binlog 查看信息
1)按时间筛选 mysqlbinlog --start-datetime="2009-09-14 0:20:00" --stop-datetim="2009-09-15 ...
- 第1章 初识java----Java简介
1.Java最初的名字是OAK,是咖啡的意思,在1995年被重命名为Java. ●Java编程语言,即语法. ●Java文件格式,即各种文件夹.文件的后缀. ●Java虚拟机(JVM),即处理*.cl ...
- awk中{print $1}什么意思
给你举个例子,echo "aa bb cc" | awk -F '{print $1}' 结果就是aa,意思是把字符串按空格分割,取第一个,自己做个测试就明白了!awk是用来提取列 ...
- MySql - JdbcType - Oracle类型映射
MySql - JdbcType - Oracle类型映射 MySQL数据类型 JDBC TYPE Oracle数据类型 BIGINT BIGINT NUMBER(20) TINYINT TINY ...
- MVC 包命名规范
action+form = model actionservlet+struts-config.xml= controller jsp+自定义标签=veiw 备注:这里说明的非常好 m ...
- 学习笔记——迭代器模式Iterator
迭代器模式,使用很多,但是很少实现.常用的集合都支持迭代器. 集合中的CreateIterator()可用于创建自己的迭代器,在里面通过调用迭代器的构造函数Iterator(Aggregate)来绑定 ...
- Vowel Counting
Vowel Counting Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Tota ...
- 经典.net面试题目(3)
1. asp.net中web应用程序获取数据的流程: A.Web Page B.Fill C.Sql05 D.Data Sourse E.DataGrid F.DataSet G.Selec ...