我正在为 iPhone 和 iPad 开发一款 3D 蓝牙多人游戏,而不使用任何游戏引擎。我正在使用 GKSession 类使用对等模式通过蓝牙在设备之间发送数据。如果我继续玩游戏一段时间没有性能下降问题,但是当我断开连接(即使没有退出游戏)并通过蓝牙游戏模式重新连接游戏时,我将面临性能下降(游戏延迟)问题.
我尝试分析我的代码(当游戏延迟时),发现数据包需要更多时间(大约 10 毫秒)才能传输到另一个设备,而当游戏运行时没有延迟时通常需要 2 毫秒。
我有三个问题:
我假设数据传输时间的增加可能是导致延迟问题的原因。如果是,如何解决此类问题?
我正在分别在 iOS 7 和 8 上运行的 iPad 和 iPhone 上测试我的游戏。由于 iOS 7 已弃用 GKSession,这会影响游戏性能吗?
- 代码的其他部分是否会导致此类性能问题?
我将不胜感激有关此问题的任何建议。先感谢您。
代码片段:
断开两个设备的代码
if(session!=nil)
{
[session disconnectFromAllPeers];
[session setAvailable:NO];
[session setDataReceiveHandler:NULL withContext:NULL];
session.delegate = nil;
[session release];
}
创建会话的代码
(GKSession *) peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type {
session = [[GKSession alloc] initWithSessionID:@"XYZ" displayName:nil sessionMode:GKSessionModePeer]; session.delegate = self; session.available = YES; return session;
}
头文件中会话的定义
@property (nonatomic, 保留) GKSession *session;