最后更新:2021-10-11 22:13:03 手机定位技术交流文章
大家好 我是新来的
最近在搞服务端Skynet今天我想写它,框架。Unity通过sproto协议与Skynet下图说明服务终端通信过程:
别闹了,我们开始派对吧
关于搭建Skynet作为公共服务部门,我为头两篇文章制定了课程,建议我首先读一读:
实际操作培训,教育你们如何从头开始管理天网,包括个案工作(服务端天网Ubuntu)。
手牵手演示如何在 Windows 上操作天网, 无需虚拟机器( WSL Linux Ubuntu Skynet VScode) 。
我不会破坏它,我要创造一个环境,开始运行。Skynet,效果如下:
服务端模块的结构如下:
我使用的Unity版本为Unity 2021.1.7f1c1因为我只是在这里展示客户和服务器sproto没有必要通过议定书来文程序。3D因为这是关于功能, 我在做一个。2D这是一个标准项目,叫做项目UnitySprotoDemo,如下:
我们要在Unity中使用sproto这是通讯协议,是一套协议的一部分sproto协议的C#这是成就和工具的首选GitHub寻找适当的公开来源材料,以尽量减少不必要的车轮重复。
关于GitHub
我已经制定了一个课程, 有兴趣的学生可以阅读: GitHub 使用课程和共同问题解决方案- 将本地项目上传到 GitHub 仓库。
我找到了一套可以在Unity中使用的sproto的C#我们先从工具开始Unity工程的Assets文件夹中新建一个sproto文件夹,用于存放从GitHub中下载下来的sproto开源项目,
GitHub
com/lvzixun/sproto-charp。
sproto-Csharp是sproto的纯C#实现。
让我们下载并保存它。Assets/Sproto/sproto-Csharp文件夹中,如下:
下面是我们可以删除的一些测试代码:
GitHub
org/lvzixun/sprotodump。
sprotodump是将.sproto文件转为.cs、.spb、.spb、.go、.md、.lua当我们得到工具,我会解释如何使用它。
让我们下载并保存它。Assets/Sproto/sprotodump文件夹中,如下:
GitHub
com/m2q1n9/sproto-Unity.com/m2q1n9sproto-Unity.com/m2q1n9sproto-Unity.com/m2q1n9sproto-Unity.com/m2q1n9sproto-Unity.m2q9sproto-Unity.com/m2q1n9sproto-Unity.
sproto-Unity封装了三个类:NetCore、NetSender、NetReceiver那我以后再研究一下怎么用它
让我们下载并保存它。Assets/Sproto/sproto-Unity文件夹中,如下:
此时工程会报错,
我们刚刚取走了它 所以它就不见了sproto-Csharp这儿有密码,别担心,我们晚点再谈.sproto生成cs就自动解决了。
今天,我们写下协议文件,其中包括服务和客户信息。
skynet框架中的examples我们准备了一份协议文件,李:proto.lua,
让我们改变并消除不受欢迎的协议, 我们将结束这样的事情:
注:由于客户端的
sproto工具的不能支持c2s和s2c的协议使用相同的tag,比如sayhello消息的tag是1,那么heartbeat消息就不可以使用1作为tag,这里我是使用2作为heartbeat的tag。
我们在Unity工程的Assets/Sproto目录有新文件夹 。protocol为了保存议定书文件,
在protocol文件夹中新建一个game.proto文件,内容如下:
接下来,我们要使用sprotodump将客户端的game.proto文件转成C#脚本。
因为sprotodump需要是用lua因此,我们必须首先安装在这里。lua环境。
lua
官方网络:这是我们特别报导全球之声网络的一部分。
Windows 的 Lua 版本版本
:
https://github.com/rjpcomputing/luaforwindows/releases

我们得到它并安装它。它完成后,打开终端并执行。lua -v如果您能提供版本号,请提供版本号。lua环境弄好了。
sprotodump是将.sproto文件转为.cs、.spb、.spb、.go、.md、.lua我们会一直等文件到来game.proto文件转成C#脚本。
sprotodump的使用方法如下:
例:
我们把命令写到bat在脚本中,双击执行足以提高工作效率。
在Assets/Sproto/protocol目录中创建gen_cs.bat文件,再创建一个gen_cs存储生成数据的文件夹C#脚本。
gen_cs.bat剧本如下,我写了一份全面的说明,你应该可以阅读。
我们执行gen_cs.bat脚本中的错误可能是可能的 :
我们打开sprotodump.lua脚本,把README后面的[[和]]改成[=[和]=]即可,
如下:
重新执行gen_cs.bat脚本,
生成成功,可以看到gen_cs文件夹中生成了gamesproto.cs脚本,
我们先新建一个Scripts用于存储我们创建的游戏逻辑脚本的文件夹,
在Scripts文件夹中创建一个Main.cs以条目脚本的形式Start该方法进行某些初始化,并且Update中驱动NetCore的消息分发,
因为服务器是本地的, 我们可以连接到它。IP地址使用127.0.0.1因此,港口,如果我们能看到 服务监听港口是...8888,
以下是客户连接服务代码:
我们把Main.cs脚本挂到Main Camera上,
运行Unity,可以看到输出了connect result: True它表明与服务器的连接成功 。
服务器也在此阶段导出所需的日志 。
让我们让客户 发送一个服务现在。sayhello消息,
我们给服务端的agent.lua脚本添加sayhello的响应,
如下:
服务器重新启动, 客户端启动。 客户端的调度为可见 。sayhello信息, 服务供应商还回了信,
我们正在检查服务日志并出口这些日志 显示我们收到了客户的通信
服务端每隔5秒给客户端发送一条heartbeat以下是电文的定义:
当服务器与客户端连接时,它每次都循环。5秒给客户端发送一条heartbeat消息。

注意:因为heartbeat由于信件不包含参数, 这里没有其他参数可以传递 。heartbeat电文定义包括诸如此等参数。
那么发消息时传cnt参数是这样子的:
客户端部分需要通过NetReceiver所登记的电文响应功能如下:
服务器已重新启动, 客户端已启动 。 我们可以看到客户从服务获得信息 。heartbeat消息了,
我正在上传此项目源到CODE CHINA有兴趣下载自己研究成果的学生可通过以下方式下载:
https://codechina.csdn.net/linxinfa/UnitySprotoDemo
让我们开始吧,关于这个Skynet、Sproto还有很多事情要做,这只是个开始 我希望这对新人有用
我是Lin Xinhai,这篇文章是我们全球之声在线特别报导的一部分。对不起,Csdn。
这不是一个容易的任务。 请具体说明您在哪里得到它, 如果您重新出版它。 非常感谢 。
如有任何技术问题,请留言或寄送私人邮件。
本文由 在线网速测试 整理编辑,转载请注明出处。