SDK、C#.
介绍
C# SDK 适用于使用 C# 语言的项目,如 Unity、Godot。
C# SDK 提供了与 ioGame 游戏服务器交互的简单封装,内部使用 Protobuf 数据协议通信。 配合上代码生成能避免编写大量的模板代码, 从而帮助客户端开发者减少巨大的工作量。
安装
从 Nuget 添加 C# SDK 和 Protobuf。
添加 C# SDK
添加 Protobuf
完成导入后的.csproj
SDK 设置
关于使用,由于 Unity 、Godot 各有一些小不同,请阅读相关示例项目。
public abstract class YourNetConfig
{
public static void StartNet()
{
// --------- IoGameSetting ---------
IoGameSetting.EnableDevMode = true;
// China or Us
IoGameSetting.SetLanguage(IoGameLanguage.China);
// message callback. cn: 回调监听
IoGameSetting.ListenMessageCallback = new YourListenMessageCallback();
// Print. cn: 打印
IoGameSetting.GameGameConsole = new YourGameConsole();
// socket
SocketInit();
IoGameSetting.StartNet();
}
private static void SocketInit()
{
IoGameSetting.Url = "ws://127.0.0.1:10100/websocket";
// Setting up the Network Communication Implementation Class.
// cn: 设置网络通信实现类。
IoGameSetting.NetChannel = new YourWebSocket();
}
}
如何生成 .proto
see https://github.com/protocolbuffers/protobuf/releases
或阅读相关示例 .proto 生成小节。
处理错误码
以下分别展示了 callback、async await 两种编码风格对于错误的处理。
SdkAction 由 ioGame 生成。
public static async Task OnTestError()
{
var value = ...
Log("------- OnTestError ------");
// code style: callback.
SdkAction.OfTestError(value, result =>
{
// value
result.Log(result.GetInt());
}).OnError(result =>
{
// error
result.Log(result.GetErrorInfo());
});
// code style: async await.
var result = await SdkAction.OfAwaitTestError(value);
if (result.Success())
result.Log(result.GetInt());
else
result.Log(result.GetErrorInfo());
}
Unity 注意事项
如果是 Unity 项目,还需将相关库的 .dll 放到 Plugins 目录下。如图
