- UnityMMO网络同步
- ECS应用情景迷思
- 准备工作
- 网络同步更新场景
- 玩家输入系统
- 小结
- 更新计划
- 作者的话
- ECS系列目录
- ECS官方示例1:ForEach
- ECS官方案例2:IJobForEach
- ECS官方案例3:IJobChunk
- ECS官方案例4:SubScene
- ECS官方案例5:SpawnFromMonoBehaviour
- ECS官方案例6:SpawnFromEntity
- ECS官方案例7:SpawnAndRemove
- ECS进阶:FixedTimestepWorkaround
- ECS进阶:Boids
- ECS进阶:场景切换器
- ECS进阶:MegaCity0
- ECS进阶:MegaCity1
- UnityMMO资源整合&服务器部署
- UnityMMO选人流程
- UnityMMO主世界
- UnityMMO网络同步
上一篇UnityMMO主世界的网络同步还没有说完,这一篇继续。
ECS应用情景迷思和作者大鹏聊了一下SynchFromNet为什么没有实现System,SynchFromNet是由服务器端驱动的,其功能就是进行网络同步。网络上的敌方释放了一个技能时,这个技能如果在主角视线范围内产生了影响,服务器才会把改变的信息发给客户端进行同步。理论上讲SynchFromNet就是System,因为它做了System该做的事情,只是没有继承和实现JobComponentSystem而已。 大鹏说要这样做(继承和实现JobComponentSystem)也是可以的:
实在想用ECS做的话就是收到后端协议时就加个组件(组件保存了服务器发送过来的数据),然后在System里处理(对实体组件进行刷选,如果实体上有相关改变的组件,则对其进行更改)。不过不需要为了用ECS而用ECS,它只是一个工具,有适合使用的情景。
因此暂时没有对其进行重构,我思考了好久,现在没有重构不保证以后不会这样去实现,毕竟ECS是面向数据的,那么在数据驱动的思想设计上,如果服务器发送了改变的数据,就应该驱动实体进行改变。这才是ECS的真正设计思想,大家觉得呢? 可能我的理解并没有大鹏的深刻,毕竟作者在实现SynchFromNet的时候是一年前,那个时候的ECS并没有现在这样成熟。至于是否应该重构,似乎并没有标准答案,只有数据达到一定的量级,我们才能够做出判断。 究竟什么时候该用ECS呢?
准备工作0下载Unity编辑器(2019.1.4f1 or 更新的版本),if(已经下载了)continue; 1大鹏将项目代码和资源拆分成两部分,所以我们需要分别下载,然后再整合。 命令行下载UnityMMO,打开Git Shell输入: git clone https://github.com/liuhaopen/UnityMMO.git --recurse
下载完成后,继续输入: git clone https://github.com/liuhaopen/UnityMMO-Resource.git --recurse
or 点击UnityMMO和UnityMMO-Resource分别下载Zip压缩包 if(已经下载了)continue; 2如果下载的是压缩包,需要先将两个压缩包分别进行解压。然后打开UnityMMO-Resource并把Assets/AssetBundleRes及其meta文件复制到UnityMMO项目的Assets目录里,接下来将UnityMMO添加到Unity Hub项目中; 3用Unity Hub打开大鹏的开源项目:UnityMMO,等待Unity进行编译工作; 4打开项目后,我们发现还需要下载Third Person Controller - Basic Locomotion FREE插件,这个简单,直接在资源商店找到下载导入即可,然后在Assets/XLuaFramework下找到main场景,打开该场景。
仔细研究了一个小时,我发现自己理解错了,SynchFromNet是实体,它把数据交给组件,然后对应的系统会自动处理。只是这个实体是混合单例实体,而不是ECS传统的实体,我是陷入思维定式了Orz。
///
/// 应用位置信息改变
///
/// 实体
/// 改变的信息
private void ApplyChangeInfoPos(Entity entity, SprotoType.info_item change_info)
{
//把服务器的信息转化成本地数据,然后交给C组件
string[] pos_strs = change_info.value.Split(',');
// Debug.Log("SynchFromNet recieve pos value : "+change_info.value);
if (pos_strs.Length
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?