带有广告横幅的Sprite Kit性能



在过去的一个月里,我朝着我在App Store上的第一款应用取得了巨大的进步。这是一款简单的2D精灵套件游戏。然而,随着iPhone 4即将发布,我对iPhone 4的性能感到吃力。

我的游戏通常一次显示大约20个节点,而其中一些节点具有物理实体。没有太多的接触,主要是运动。

最近我在我的项目中添加了iAd和AdMob横幅支持。横幅都设置和工作。我的游戏尝试着展示iAd是否可用,并使用AdMob作为备选方案。

现在我购买了开发者会员资格,并最终可以在实际设备上测试应用,我在iPhone 4上经历了很多帧掉帧和低fps。iPhone 5和iPhone 4S似乎工作得很好,但iPhone 4的平均帧率约为40fps,下降到15/20 fps。我也测试了没有广告的游戏,这大大提高了帧率,减少了延迟,但在iPhone 4上仍然存在。

每当出现游戏场景时,我都会启动iAd和admob横幅,并让他们请求横幅。如果iAd成功,则显示该广告条;如果失败,则AdMob广告条移动到可见区域。它们是这样初始化的:

    iADBanner = [[MyIADBannerView alloc] initWithAdType:ADAdTypeBanner origin:CGPointMake(0, -CGSizeFromGADAdSize(kGADAdSizeBanner).height)];
    iADBanner.delegate = self;
    [iADBanner moveToOrigin];
    [self.view addSubview:iADBanner];
    [GADBanner moveToOrigin];
    GADBanner = [[MyGADBannerView alloc] initWithAdSize:kGADAdSizeBanner origin:CGPointMake(0, -CGSizeFromGADAdSize(kGADAdSizeBanner).height)];
    GADBanner.rootViewController = self;
    GADBanner.delegate = self;
    [GADBanner moveToOrigin];
    GADRequest* request = [GADRequest request];
    request.testDevices = [NSArray arrayWithObjects:GAD_SIMULATOR_ID, @"device_id", nil];  
    [GADBanner loadRequest:request];
    [self.view addSubview:GADBanner];

我真的不知道是什么原因导致延迟,但我有点失望,因为一个简单的2d游戏,大约20个节点应该没有任何性能问题,即使在iPhone 4上,不是吗?

也许你可以给我一些关于如何优化我的spritekit代码的建议。

Thanks in advance

他们中的大多数有一些SKActions(仅运动)在他们上运行,而只有少数有PhysicsBodies和执行物理的东西…一旦它们离开屏幕,节点就会从它们的父节点中移除。

我想我会先继续我的项目,然后过一段时间再看性能改进。然而,我也试图学习的是,为了提高整体表现,是否应该始终使用一些技术?

最新更新