# TapBattleClient.Initialize
# 功能描述
初始化Tap小游戏多人联机SDK,自动创建OnlineBattleManager实例,并注册事件处理器。这是使用SDK的第一步,必须在调用其他API之前完成初始化。
# 方法签名
public static void Initialize(ITapBattleEventHandler eventHandler)
# 相关方法
public static void UnregisterListener()
取消注册多人联机事件监听器。调用后将停止接收所有SDK事件通知。
# 参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| eventHandler | ITapBattleEventHandler | 是 | 事件处理器实例,用于接收SDK的异步事件通知(如玩家进入房间、对战开始、帧同步等) |
# ITapBattleEventHandler 接口
事件处理器需要实现以下接口方法:
public interface ITapBattleEventHandler
{
// 连接事件
void OnDisconnected(DisconnectedInfo info);
// 错误事件
void OnBattleServiceError(BattleServiceErrorInfo info);
// 房间属性事件
void OnRoomPropertiesChanged(RoomPropertiesNotification info);
// 玩家属性事件
void OnPlayerCustomPropertiesChanged(PlayerCustomPropertiesNotification info);
void OnPlayerCustomStatusChanged(PlayerCustomStatusNotification info);
// 帧同步事件
void OnFrameSyncStopped(FrameSyncStopInfo info);
void OnFrameReceived(FrameData frameData);
void OnFrameSyncStarted(FrameSyncStartInfo info);
// 玩家事件
void OnPlayerOffline(PlayerOfflineNotification info);
void OnPlayerLeft(LeaveRoomNotification info);
void OnPlayerEntered(EnterRoomNotification info);
// 消息事件
void OnCustomMessageReceived(CustomMessageNotification info);
// 踢人事件
void OnPlayerKicked(PlayerKickedInfo info);
}
# 使用说明
# 基本流程
- 创建实现
ITapBattleEventHandler接口的事件处理器类 - 实例化事件处理器
- 调用
Initialize方法,传入事件处理器实例 - SDK 自动创建 OnlineBattleManager 实例并完成初始化
# 注意事项
- 必须首先调用 - 这是使用SDK的第一步,在调用任何其他API之前必须完成初始化
- 只需调用一次 - 在应用生命周期内只需调用一次,通常在游戏启动时调用
- 自动管理Manager - SDK会自动创建和管理OnlineBattleManager实例,开发者无需手动创建
- 事件处理器不能为空 - 必须传入有效的事件处理器实例,否则无法接收SDK事件
- 线程安全 - 事件回调会在主线程执行,可以安全地操作Unity对象
- 取消注册 - 如需停止接收事件通知,可调用
TapBattleClient.UnregisterListener()方法
# 代码示例
# 示例1:基础初始化
using UnityEngine;
public class BattleManager : MonoBehaviour
{
void Start()
{
// 创建事件处理器实例
var eventHandler = new MyBattleEventHandler();
// 初始化SDK
TapBattleClient.Initialize(eventHandler);
Debug.Log("多人联机SDK初始化完成");
}
}
// 事件处理器实现
public class MyBattleEventHandler : ITapBattleEventHandler
{
public void OnFrameSyncStarted(FrameSyncStartInfo info) {
Debug.Log($"帧同步开始,房间ID: {info.roomInfo.id}");
}
public void OnFrameReceived(FrameData frameData) {
Debug.Log($"收到第{frameData.id}帧数据,包含{frameData.inputs.Length}个输入");
}
public void OnPlayerEntered(EnterRoomNotification info) {
Debug.Log($"玩家 {info.playerInfo.id} 进入房间");
}
// 实现其他接口方法...
public void OnDisconnected(DisconnectedInfo info) { }
public void OnPlayerLeft(LeaveRoomNotification info) { }
public void OnPlayerKicked(PlayerKickedInfo info) { }
public void OnPlayerOffline(PlayerOfflineNotification info) { }
public void OnPlayerCustomStatusChanged(PlayerCustomStatusNotification info) { }
public void OnPlayerCustomPropertiesChanged(PlayerCustomPropertiesNotification info) { }
public void OnRoomPropertiesChanged(RoomPropertiesNotification info) { }
public void OnFrameSyncStopped(FrameSyncStopInfo info) { }
public void OnCustomMessageReceived(CustomMessageNotification info) { }
public void OnBattleServiceError(BattleServiceErrorInfo info) { }
}
# 最佳实践
- 尽早初始化 - 建议在游戏启动时(如首个场景的Awake或Start方法中)就完成初始化
- 单例模式 - 通常在单例GameManager中初始化,确保全局只初始化一次
- 完整实现事件 - 建议实现所有事件接口方法,至少添加日志以便调试
- 错误处理 - 务必实现
OnBattleServiceError事件,及时处理服务异常 - 资源清理 - 在应用退出或切换场景时调用
FinalizeSDK清理资源 - 取消监听 - 在不需要接收事件时(如退出多人模式),可调用
UnregisterListener()停止事件监听
# 相关API
- TapBattleClient.FinalizeSDK - 终止化SDK,释放资源
- TapBattleClient.Connect - 连接多人联机服务器
- ITapBattleEventHandler - 事件处理器接口详解
