Unity Protobuf安装问题

16年关闭了我的最后一个Minecraft之后就定下了以后要做游戏的梦想。如今误打误撞走进了Web开发,云原生。趁现在比较清闲,来完成我儿时的梦想(笑。

花一天时间了解了一下Unity联机的相关内容,游戏服务器通讯真的是五花八门,各种方案层出不穷。最终我选择用Lock Step Sync + Kcp + Protobuf + Go来实现服务器的通讯。

没想到在Unity中安装Protobuf C#就踩了大坑,所以决定写一篇blog来记录一下我所浪费的一下午时间。

描述

在Unity中使用Protubuf有两种方式。

1.下载Protobuf后,直接把csharp/Google.Protobuf丢进unity项目文件夹中

2.编译Google.Protobuf,把生成的Google.Protobuf.dll丢进unity项目文件夹中

起初我编译了Protobuf,但报错无法导入dll,我猜可能是Mac上的一些兼容问题。花费了很久去查资料但一无所获。

之后我用了另一种方法,直接把源码丢进去,再开启编译unsafe code模式后,又报错如下。

image-20230202180459571

解决方案

在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中即可解决问题。

image-20230202181012465

未来Unity可能会修复这个问题,具体参考Issues https://github.com/protocolbuffers/protobuf/issues/10085