Unity 游戏项目
操作场景
以 Unity Editor 2019.3 版本为例,本文介绍使用小游戏联机对战引擎 MGOBE API 快速接入对战平台的方法,实现一个 MGOBE 的 HelloworldUnity。
前提条件
- 已在小游戏联机对战引擎控制台创建小游戏实例,并开通联机对战服务。
- 已获取游戏 gameID 和 secretKey。
操作步骤
- 打开 Unity Hub,创建一个小游戏项目。如下图所示:  
 
- 点击【创建】,进入项目开发界面:  
 
导入 Mgobe Package
- 将 com.unity.Mgobe.unitypackage 拖入 editor 中的 Project 栏,点击【import】进行 package 导入。 单击进入Package 下载页面  
  
 
- 在 Assets 目录下创建 “Scripts” 文件夹,并新建 Scripts/main.cs 文件 
- 在 Hierachy 视图下,右击 SampleScene,选中 GameObject -> CreateEmpty,新建一个空的游戏对象  
 
- 选中新建的 GameObject,拖动 main.cs,添加为该 GameObject 的 Component  
 
- 参考以下示例代码,将 mgobe package 导入 main.cs 
| 12
 3
 
 | using Packages.com.unity.mgobe.Runtime.src;using Packages.com.unity.mgobe.Runtime.src.SDK;
 using Lagame;
 
 | 
调用 API
- 在 main.cs 中输入以下代码,完成 SDK 初始化,获得 room 实例
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 
 | GameInfoPara gameInfo = new GameInfoPara {// 替换 为控制台上的“游戏ID”
 GameId = "XXXXXXXXXXXXXX",
 // 玩家 openId
 OpenId = "openid_123_test",
 //替换 为控制台上的“游戏Key”
 SecretKey = "XXXXXXXXXXXXXX"
 };
 
 ConfigPara config = new ConfigPara {
 // 替换 为控制台上的“域名”
 Url = "XXXXXXX.wxlagame.com",
 ReconnectMaxTimes = 5,
 ReconnectInterval = 1000,
 ResendInterval = 1000,
 ResendTimeout = 10000
 };
 
 // 初始化监听器 Listener
 Listener.Init (gameInfo, config, (ResponseEvent eve) => {
 if (eve.Code == 0) {
 Debug.Log ("初始化成功");
 // 初始化成功之后才能调用其他 API
 var room = new Room(null);
 // ...
 }
 // 初始化广播回调事件
 
 });
 
 | 
- 修改初始化回调函数,调用 room 对象的查询房间接口(getRoomDetail),即可验证是否成功接入对战平台。示例代码如下所示:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 
 |  // 初始化监听器 ListenerListener.Init (gameInfo, config, (ResponseEvent eve) => {
 if (eve.Code == 0) {
 Debug.Log ("初始化成功");
 // 初始化成功之后才能调用其他 API
 //查询玩家自己的房间
 var room = new Room (null);
 room.GetRoomDetail ((ResponseEvent e) => {
 if (e.Code != 0 && e.Code != 20011) {
 Debug.Log ("初始化失败");
 }
 // Type type = e.data.GetType();
 // Debug.LogFormat ("查询成功: {0}", type);
 Debug.Log ("查询成功");
 if (e.Code == 20011) {
 Debug.Log ("玩家不在房间内");
 } else {
 // 玩家已在房间内
 var res = (GetRoomByRoomIdRsp) e.Data;
 Debug.LogFormat ("房间名 {0}", res.RoomInfo.Name);
 }
 });
 } else {
 Debug.LogFormat ("初始化失败: {0}", eve.Code);
 }
 // 初始化广播回调事件
 });
 
 | 
- 编译并运行项目,控制台中输出“查询成功”信息即表示接入成功