智能客服
你问我答,随时在线为你解决问题
您可以通过调用联机对战服务相关接口,实现帧同步,保证端与端之间的稳定通信。同时,联机对战服务还提供了两种补帧方式,可用于补帧相关使用场景。
玩家已进入房间。

玩家进入房间后,可通过如下相关接口,实现帧同步。
- // 添加帧同步开始通知回调
- Global.Room.OnStartSyncFrame = () => { // 通过Global类的Room属性获取Room对象,绑定监听事件
- // 接收帧同步开始通知,处理游戏逻辑
- };
-
- // 添加帧同步停止通知回调
- Global.Room.OnStopSyncFrame = () => { // 通过Global类的Room获取Room对象,绑定监听事件
- // 接收帧同步停止通知,处理游戏逻辑
- };
-
- // 添加接收帧同步信息回调
- Global.Room.OnRecvFrame = (msg) => { // 通过Global类的Room属性获取Room对象,绑定监听事件
- // 处理帧数据msg
- };
- // 开启帧同步
- Room room = Global.Room; // 通过Global类的Room属性获取Room对象
- Room.StartFrameSync(response =>
- {
- // 开始帧同步
- });
- // 发送帧数据,房间内玩家可通过该方法向联机对战服务端发送帧数据
- string[] frameDatas = new string[] { frameData };
- Room room = Global.Room; // 通过Global类的Room属性获取Room对象
- Room.SendFrame(frameDatas, response => {});
- // 向联机对战后端发送停止帧同步请求
- Room room = Global.Room; // 通过Global类的Room属性获取Room对象
- Room.StopFrameSync(response => {
- // 停止帧同步;
- });
SDK提供了自动补帧的能力,如果您在AGC控制台已开启了自动补帧(默认开启)功能,当玩家发生掉线状况后重新加入到原游戏中,SDK识别到帧数不连续,客户端会自动发起请求进行补帧。
除SDK自动补帧方式外,还可以通过手动方式进行补帧。
如果您使用手动补帧方式,需前往AGC控制台确认自动补帧功能已关闭,否则可能会导致补帧功能异常。
- int beginFrameId = 123; // 起始帧Id
- int size = 100; // 请求帧数
- Global.Room.SendRequestFrame(beginFrameId, size, response => {});
- // 添加接收帧同步信息回调
- Global.Room.OnRecvFrame = (msg) => { // 通过Global类的Room属性获取Room对象,绑定监听事件
- // 处理帧数据msg
- };
- // 添加接收帧同步信息回调
- Global.Room.OnRequestFrameError= response => this.OnRequestFrameError(response);
-
- private void OnRequestFrameError(BaseResponse response){
- // 处理帧请求补帧失败结果
- }
智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功