对不起,这个问题的标题有点含糊不清。
所以我有一个通过视图控制器启动的SpriteKit游戏。我也有一个通过同一视图控制器显示的iAd。当游戏暂停时,显示iAd,当游戏未暂停时,我向视图控制器发送NSNotification以隐藏iAd。
我的问题出现在用户按下iAd时。暂停游戏时会显示iAd,只需点击屏幕即可暂停游戏。因此,当用户点击iAd时(在游戏暂停时),iAd会在游戏停止运行时全屏显示。
我需要一种方法让我的视图控制器知道,当显示iAd时,SKScene不应接收某个CGRect(显示iAd的帧)中的任何触摸。
我怎么能这样做?
答案 0 :(得分:0)
让您的场景符合AdBannerViewDelegate
协议。如果场景是横幅的委托,您可以在场景BOOL
中实现_bannerIsActive
ivar。然后:
- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{
_bannerIsActive = YES;
return YES;
}
在你的非暂停逻辑中你需要检查BOOL并且只在_bannerActive == NO
时重启游戏。
当然,当横幅完成其动作时,您需要将其设置为NO:
- (void)bannerViewActionDidFinish:(ADBannerView *)banner{
_bannerIsActive = NO;
}
答案 1 :(得分:0)
我在制作的游戏中遇到了类似的问题。当播放器丢失时,我显示了排行榜按钮,但也“点击任意位置重启”。因此,当我点击排行榜按钮时,游戏开始并在排行榜后面跑。所以我觉得我的解决方案可能属于你的。
制作一个if语句,只有当用户点击某处并且没有点击另一个对象(iAd)时,游戏才会取消暂停。