【发布时间】:2014-05-09 04:41:11
【问题描述】:
我目前有一个视图控制器,用于使用 Apple 的多点连接框架将两个设备连接在一起。一切都很好,并且可以在两个设备之间发送消息。一旦他们两个设备连接并且您点击开始按钮,两个设备都会转换到另一个呈现 SKScene 的视图控制器(这是一个游戏应用程序)。我希望 SKScene 也能够发送和接收消息,但是当转换到新的 VC/SKScene 时,连接会丢失。有没有办法保持视图控制器和 SKScene 之间的连接?
SKView * skView = (SKView *)self.view;
if (!skView.scene) {
//skView.showsFPS = YES;
//skView.showsNodeCount = YES;
//skView.showsPhysics = YES;
// Create and configure the scene.
SKScene * scene = [gameMyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[scene.userData setObject:[NSNumber numberWithBool:self.isMulti] forKey:@"Game"];
[scene.userData setObject:[NSNumber numberWithBool:self.isAttack] forKey:@"Attack"];
[scene.userData setObject:self.appD forKey:@"AppDel"];
// Present the scene.
[skView presentScene:scene];
}
这就是我的场景在名为“gameViewController”的视图控制器的 viewWillLayoutSubviews 中呈现的方式。处理连接的视图控制器称为“ConnectGameViewController”,当按下开始按钮时,它会转换为“gameViewController”。
【问题讨论】:
-
你需要从VC发布一些与SKScene的声明和展示相关的代码
-
另外,请提供有关您在何处创建和保持多对等会话的一些详细信息。这应该在您的应用程序委托或另一个单例类中。如果您在第一个视图控制器中执行此操作,那么当该对象超出范围时,您可能会丢失会话
-
对,完全忘记了。所以我的gameAppDelegate(它是一个精灵工具包项目)创建了一个名为MPCHandler 的类的实例,它是MCSessionDelegate。这包含设置浏览器、接收数据等的代码。ConnectGameViewContoller 是 MCBrowserViewControllerDelegate,这是所有广告等实际发生的地方(从 mpcHandler 调用的方法)
-
知道了,我的应用代理设置在错误的位置
标签: ios iphone networking sprite-kit skscene