目录
前言
公司的前辈基于Netty开发了一个服务器,推荐我在前端也使用Netty,于是找到了DotNetty这一能够在C#使用的Netty框架。两者基本一致,只有一些方法的名字有略微不同,首先进行环境配置。
链接
DotNetty ——Githubhttps://github.com/Azure/DotNettyProtocolBuffers ——Githubhttps://github.com/protocolbuffers/protobufProtocolBuffers ——谷歌官方网站https://developers.google.com/protocol-buffers?hl=zh-cn
环境配置
往Unity引入包有两种方式,一个是用Nuget,一个是自己手动导入。这里我两种方式都用了,因为NuGet导入了Dotnetty后还缺少了两个依赖包,并且在NuGet中下载失败了。
安装NuGetForUnity
下载NugetForUnity.unitypackage,双击打开添加到项目中。
NugetForUnity的GitHub地址https://github.com/GlitchEnzo/NuGetForUnity/releases
导入完成后标题栏会出现NuGet,点击NuGet→Manage NuGet Packages打开NuGet窗口。(没有显示出来的话就把项目关掉然后再打开就好了)
可以在这里搜索各种包,可以很方便地添加到Unity工程里。
安装Protobuf
安装Google.Protobuf包。
安装Dotnetty包
暂时只需要这六个,特别是DotNetty.Codecs.Protobuf。DotNetty.Codecs.Protobuf包中有着关于Protobuf的Decoder和Encoder,即使没有安装DotNetty.Codecs.Protobuf包,DotNetty.Codecs包中也有着DotNetty.Codecs.Protobuf这一命名空间,但是里面没有ProtoDecoder和ProtoEncoder。
然后我还去下了DotNetty.Codes.ProtocolBuffers,发现这个包里面是有ProtoDecoder和ProtoEncoder的,但是没法用啊(?),给我整蒙了。
下载完成后Unity会报错,这个时候只要重新打开项目就OK了。
手动安装其他依赖包
写完Client打算打包Unity程序进行测试的时候报错了,提示缺少了两个依赖包,并且NuGet管理器里面没法安装,点击完立即卡住。那我就只好下载好自己导入了。
缺少的两个依赖包分别是:
- System.Collections.Immutablehttps://www.nuget.org/packages/System.Collections.Immutable/
- System.Runtime.CompilerServices.Unsafehttps://www.nuget.org/packages/System.Runtime.CompilerServices.Unsafe
点击Download package下载,这里我没有选择preview版,选择的是6.0.0(哪个下载多下哪个啊不是吗)。
下载完后把文件后缀改成zip,并且进行解压,打开文件夹后是这样的。
其中Lib文件夹里面的文件和Unity工程设置里的.Net框架设置有关,可以在Unity中选择Edit→ProjectSettings→Player→OtherSetting→Configuration→ApiCompatibilityLevel查看对应的.Net框架
我的Unity项目用的是 .NET Standard 2.1,因此选择相近的框架,只需要netstandard2.0这一文件夹就可以了,其他的删掉。
在Unity中新建文件夹Plugins,把整个文件夹丢到里面。(不要丢在NuGet生成的Packages文件夹里,不然项目启动的时候NuGet会把它没有记录的包自动给你删除掉)。
这样一来客户端有关Dotnetty和Protobuf的环境配置就做好了,可以进行基于DotNetty的Unity客户端开发。