0

我有一个简单的 spritekit 应用程序,初始化时的 SKView 显示一个启动屏幕(场景),用户单击一个按钮,他们被带到主游戏场景。

一切正常,但想给它添加 iads,所以我在主场景中实例化了一个 adview,并将其代理分配给主场景。

添加看起来很好,我点击它,它正确显示了广告,但是我关闭了广告,当我这样做时,应用程序返回并且看起来它重新初始化了显示 Splash 场景的整个 SKVIEW,而不是主在委托调用中暂停的场景。

因此,当 IAD 被解除时,返回到父应用程序的回调到底是什么,因为它清楚它不仅仅是委托方法,它返回并重新初始化视图等。基本上在我看来,我需要在哪里捕获它的返回从已取消的广告中提取并妥善处理此案。

4

1 回答 1

1

听起来您正在运行场景viewWillLayoutSubviews而不检查场景是否已经在运行。确保启动代码看起来像这样,否则它将在viewWillLayoutSubviews方法运行时重新启动起始场景(它可以并且将被多次调用,例如在旋转设备时以及显然在关闭广告时):

-(void)viewWillLayoutSubviews 
{
    SKView* skView = (SKView*)self.view;

    // only create/launch first scene when SKView has no running scene
    if (skView.scene == nil)
    {
        // create and present scene here ...
    }

    [super viewWillLayoutSubviews];
}
于 2014-04-25T13:26:15.870 回答