2016年关闭了我的最后一个Minecraft服务器之后就立下了以后要做游戏的梦想。如今误打误撞走进了Web开发,云原生。趁现在比较清闲,来完成我儿时的梦想(笑。
花一天时间了解了一下Unity联机的相关内容,游戏服务器通讯真的是五花八门,各种方案层出不穷。最终我选择用Lock Step Sync + Kcp + Protobuf + Go来实现服务器的通讯。
没想到在Unity中安装Protobuf C#就踩了大坑,所以决定写一篇blog来记录一下我所浪费的一下午时间。
描述
在Unity中使用Protubuf有两种方式。
1.使用Release的dll。
2.手动编译Google.Protobuf,把生成的Google.Protobuf.dll丢进unity项目文件夹中。
无论如何,丢进Unity会报错error CS0122: 'Unsafe' is inaccessible due to its protection leve
解决方案
在Unity编辑器目录下找到System.Runtime.CompilerServices.Unsafe.dll,参考(../2021.3.6f1c1/Unity.app/Contents/MonoBleedingEdge/lib/mono/msbuild/Current/bin/Roslyn/System.Runtime.CompilerServices.Unsafe.dll)再把System.Runtime.CompilerServices.Unsafe.dll和Google.Protobuf.dll一起放进Assets中即可解决问题。
未来Unity可能会修复这个问题,具体参考Issues https://github.com/protocolbuffers/protobuf/issues/10085。