【发布时间】:2014-10-16 16:48:50
【问题描述】:
在过去的一个月里,我在 App Store 上的第一个应用程序方面取得了巨大进步。这是一个简单的 2D Sprite Kit 游戏。 然而,随着即将发布,我正在为 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];
我真的不知道是什么导致了延迟,但我有点失望,因为一个具有大约 20 个节点的简单 2D 游戏应该不会有任何性能问题,即使在 iPhone 4 上也是如此,应该吗?
也许你可以给我一些关于如何优化我的 SpriteKit 代码的建议。
提前致谢
【问题讨论】:
-
这 20 个节点是动画的吗?您是否经常创建新节点并删除旧节点?
-
您需要缩小性能问题的范围。在这一点上,除了模糊或笼统的建议外,不可能给出任何建议。
-
iphone 4 相对较慢,甚至比 3gs 还要慢,因为它必须渲染 4 倍的像素数,而速度只有 33%。至于iad的表现,之前已经报道过很多次了:搜索SO。
标签: performance sprite-kit lag frame-rate adbannerview