Skip to main content

SDK、C#.

介绍

C# SDK 适用于使用 C# 语言的项目,如 Unity、Godot。

C# SDK 提供了与 ioGame 游戏服务器交互的简单封装,内部使用 Protobuf 数据协议通信。 配合上代码生成能避免编写大量的模板代码, 从而帮助客户端开发者减少巨大的工作量。

安装

从 Nuget 添加 C# SDK 和 Protobuf。

添加 C# SDK An



添加 Protobuf An



完成导入后的.csproj An

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 目录下。如图

cs_p4