
ET框架
文章平均质量分 87
童小豆子
这个作者很懒,什么都没留下…
展开
-
async,await和TaskCompleteSource的一些疑问
之前看ET框架的时候,发现了一些不理解的地方。其实都是集中在async-await的用法和TaskCompleteSource的用法上的,这会儿就学习了一些。 第一个例子:然后在Main函数中调用TaskCompleteSourceButton_OnClick方法,TaskCompleteSourceButton_OnClick();Console.W...原创 2019-10-26 14:24:25 · 1405 阅读 · 0 评论 -
ET服务端框架学习——ActorLocationSender信使组件
最近在看ET的服务端(5.0版本)框架,突然发现了一点一直搞不太懂。是关于ActorLocationSender组件的。这个类管理一个待发送消息的队列,还有一个ETTaskCompletionSource对象用于获取异步方法的值。该类在初始化后,会遍历队列中的元素,执行发送任务。public static async ETVoid UpdateAsync(this ActorLocation...原创 2019-10-26 11:10:09 · 595 阅读 · 0 评论 -
ET框架学习——消息系统之五
上一篇文章简单学习了一下AChannel和对应的派生类。这里来学习和Channel对应的Server相关的类 和Channel一样,Server也是对应一个基类AServer和派生类。并且派生类也是对应TCP,KCP和WebSocket三个。KCP和WebSocket都相对来说比较陌生。这里只看一下TServer相关的内容。 AServer ...原创 2019-03-03 17:35:08 · 1239 阅读 · 0 评论 -
ET框架学习——消息系统之六
本篇讲解下NetworkComponent组件,框架在初始化的时候,挂载的是NetOuterComponent组件,该组件继承自NetworkComponent组件,内部指定了使用了网络协议为TCP。 NetworkComponent Dictionary<long, Session> sessions字典,存放的是使用到的和Channel相关的Se...原创 2019-03-06 10:48:00 · 1220 阅读 · 0 评论 -
ET框架学习——消息系统之七,从init走一遍网络消息
网络组件创建 ET中的网路组件在客户端就是NetOuterComponent,当然,这是包装过的。这里面只是指定了所使用的网络类型,demo中默认使用的是TCP类型的网络。这里使用的组件工厂添加组件,所以会默认执行Awake事件。 NetOuterComponent组件的Awake事件是定义在类NetOuterComponentAwakeSyst...原创 2019-03-30 16:18:27 · 1395 阅读 · 0 评论 -
ET服务端框架学习——消息相关组件
这里要先说明一下ET框架中的消息类型,可以参考这篇文章《ET框架---消息类型浅析》: 1、客户端发送给服务器的消息 C2S 1)不需要与其他服务器通信(普通消息) a、不需要返回结果(普通的普通消息) b、需要返回结果(普通的RPC消息)...原创 2019-04-08 16:44:52 · 1314 阅读 · 0 评论 -
ET服务端框架学习——服务端入口
ET框架有一个好处就是很多组件在客户端和服务端几乎都是可以通用的。比如EventSystem组件,和在客户端是一样的使用逻辑,具体可以看这篇文章《ET框架学习——EventSystem类》。 在加载完服务端的Hotfix和Model的dll后,开始后面就是开始读取服务端的配置,并根据配置加载相应的组件。服务端的配置的读取方法使用的是CommandLine,该类用于...原创 2019-04-03 15:10:08 · 3234 阅读 · 2 评论 -
ET服务端框架学习——寻路demo
这里用master版本的寻路来学习一下ET的服务端,ET的寻路部分是放在服务端计算的,然后将路径的点集发送到客户端,有客户端具体执行移动命令。 在此之前,先来看看ET客户端的关于寻路部分的demo。 UnitPathComponent组件 该组件是执行寻路移动的核心组件之一。 该组件没有接通事件系统。StartMove(M2C_Pathfind...原创 2019-04-24 17:37:30 · 1606 阅读 · 2 评论 -
ET框架学习——消息系统之七
最近一直在搞这个消息流转路径,做了几张图:Connect&ReciveSend数据包装变化原创 2019-08-19 10:21:12 · 469 阅读 · 1 评论 -
ET框架学习——消息系统之四
这篇讲一下AChannel基类和其相关的派生类。AChannel类看名字应该是频道的意思,看代码是和消息内容相关的类。 AChannel 关于AChannel在我之前的文章里面有讲到过,大家可以看这里。 内容不是很多,主要是定义了两个事件,用于放置回调方法。还有和这两个事件相关的调用方法。以及一些其他。 KChannel 框架中有3个Chan...原创 2019-03-01 17:33:45 · 2213 阅读 · 0 评论 -
ET框架学习——消息系统之二
AChannel AChannel类继承自ComponentWithId。内部保存了一些和网络传输相关的字段(AService,IPEndPoint等),还有两个委托Action<AChannel, int> errorCallback和Action<MemoryStream> readCallback。这两个委托和消息传输的结果相关,分别用于保存错...原创 2019-02-19 16:23:15 · 1124 阅读 · 0 评论 -
ET框架学习——消息系统之三
鉴于我之前对于游戏的网络开发部分没有经验。后面关于ET消息系统的学习都将参考这位朋友Norman_Lin的博客来学习。后面会自己再来调整文章的顺序,结构等。 CircularBuffer 这个应该是ET框架中消息相关的类,继承自Stream类。ChunkSize字段的代表一个字节数组的最大长度。后面两个队列应该是用于存储消息流的。public int Ch...原创 2019-02-26 19:30:49 · 1104 阅读 · 0 评论 -
ET框架学习——Component基类和几个派生类,管理类
Init类是ET框架接触的第二个脚本。该类开始就设置了一个SynchronizationContext对象。 SynchronizationContext类是用于多线程之间通信的一个类,其在通讯中充当了个传输者的角色(详情可以参看这篇文章)。OneThreadSynchronizationContext类继承自SynchronizationContext。内部维护了一个Co...原创 2018-08-17 15:23:19 · 1749 阅读 · 0 评论 -
ET框架学习——EventSystem类
EventSysterm类中维护了许多字典和队列,如下: UnOrderMultiMap是无序的MultMap字典,可以参见之前的文章。 IEvent接口内部提供的是四个重载的Handler方法。IAwakeSystem接口提供一个Type返回值的方法,返回继承该接口的泛型类型。IStartSystem接口和IAwakeSystem接口类似,不过...原创 2018-08-30 16:15:57 · 1935 阅读 · 0 评论 -
ET框架学习——配置(表)相关类(JsonHelper,ConfigHelper,GlobalProto)
GlobalConfigComponent类内容不多,一个GlobalProto类型字段,一个Awake方法,Awake方法也是加到了事件系统中去了,在Unity运行时,会统一走Awake方法。 ConfigHelper类的静态方法GetGlobal返回的是GlobalProto.text文档中的内容。如下:两个地址GetGlobal方法中, Reso...原创 2018-08-30 21:12:48 · 1104 阅读 · 0 评论 -
ET框架学习——ResourceComponent资源管理组件
ABInfo类 ResourceComponent组件涉及到几个类——ABInfo(AB资源信息?)和AssetBundleHelper这两个类。ABInfo继承自Component,维护三个字段,一个int类型的refCount属性,(应该是用于依赖计数的?),一个string的Name属性, 一个AssetBundle资源字段。构造函数接受一个名字和ab包资源...原创 2018-08-31 17:38:58 · 1556 阅读 · 0 评论 -
ET框架学习——TimerComponent类和有序MultiMap类
Game类中总共有4个实例对象:Scene对象, EventSystem对象,ObjectPool对象,Hotfix对象。Scene对象实例化成为单例,实例是,会默认添加一个TimerComponent组件。 MultiMap<T, K> MultiMap<T, K> 泛型类,是一个自定义的数据结构。内部是基于SortedDicti...原创 2018-08-29 19:53:34 · 801 阅读 · 0 评论 -
ET框架学习——UIComponent组件和UI组件
UI组件继承自Entity,接通了Awake事件,执行Awake方法。内部维护了一个GameObject和一个Dictionary<string, UI> children字典。 Awake(GameObject gameObject)方法,会清空字典,并且给GameObject赋值。 内部还有三个对字典操作的方法。Add(UI ui)方法向字典中添加元素...原创 2019-02-06 13:07:19 · 2054 阅读 · 0 评论 -
ET框架学习——OpcodeTypeComponent组件和MessageDispatherComponent组件
OpcodeTypeComponent OpcodeTypeComponent组件接入了Awake和Load两个事件,会在事件系统收集反射信息和该组件被创建时,执行Load方法。 该类中维护了一个字典Dictionary<ushort, object> typeMessages和一个DoubleMap<ushort, Type> opc...原创 2019-01-23 11:25:50 · 1224 阅读 · 0 评论 -
ET框架学习——消息系统之一
OpcodeTypeComponent组件和MessageDispatherComponent组件都是消息系统的组成部分。这里就来好好捋一捋ET的消息系统。从我目前看到现在来说,这个消息系统包括一系列的事件接口,特性,和消息类型的识别码等等部分,这里先撇开前后端通讯部分的消息。 消息系统中的抽象类,接口 public interface IMHandler{ void...原创 2019-01-23 16:49:55 · 2156 阅读 · 0 评论 -
ET框架学习——ConfigComponent组件和ACategory<T>类
ACategory<T>类 ACategory<T>抽象类继承自ACategory类,T实现接口IConfigpublic abstract class ACategory : Object{ public abstract Type ConfigType { get; } public abstract IConfig GetOne();...原创 2019-02-06 17:17:06 · 556 阅读 · 0 评论 -
ET框架学习——ReferenceCollector类
ReferenceCollector类 看这个类在inspector中的表现,猜想这个类应该有引用对象的功能。 ReferenceCollectorData类序列化了一个名字key和object对象。就是对应上面的"LobbyCanvas"和LobbyCanvas对象。这个类有Serializable特性,所以该类是可以被序列化的。 Ref...原创 2018-08-16 11:34:57 · 4401 阅读 · 0 评论