iPhone Opengl游戏广告== fps问题?

时间:2010-11-22 21:04:53

标签: iphone opengl-es iad

我有一个运行良好的游戏(大约30fps),但是当我尝试实施广告时fps消失了。我尝试了Greystripe和iAds,但结果相同(iAd可能有点差)。平均fps几乎相同,但总是有大量的峰值(每秒1-2次峰值)并且游戏无法播放。

我想这是因为广告在另一个视图中。我在某处看到iphone上的opengl应用程序不喜欢与他们有另一个视图,但有很多游戏在app store上有广告。他们是怎么做到的?

我的实施应该没问题。我做了一切,因为文档和样本告诉我。我将我的opengl视图和广告视图作为app视图中的子视图,adview位于opengl视图的前面,因此覆盖了部分视图。这可能是问题吗?将opengl视图缩小到广告的左侧空间以使它们不重叠是否更好?你还有其他任何想法吗?

4 个答案:

答案 0 :(得分:1)

Lope,我创建了一个要点at this link,其中包含我使用cocos2d处理iAds的单个“AdManager”类。当然,Cocos2d位于OpenGL之上,我发现即使对于相对复杂的游戏,此代码也不会影响FPS。

您必须稍微修改一下才能使用您的应用程序,更改cocos2d调用等,但这会为您提供iAd的异步加载,这有助于解决FPS问题。

要使用此类,请包含其标题并调用

[[AdManager sharedManager] attachAdToView:self.view];

您需要iAds的任何地方。在加载广告之前,广告将一直处于隐藏状态,此时广告会弹出屏幕顶部。 (该课程适用于iOS 4.0,4.1和4.2)。

另外,我应该补充一点,我在一个叫做“Cocos2DController”的整体UIViewController里面运行cocos2d。当我将广告附加到cocos2d视图时,我正在使用

[[AdManager sharedManager] attachAdToView:[[CCDirector sharedDirector] openGLView]];

祝你好运!

答案 1 :(得分:0)

我们可以用苹果的选择来打击和错过,但是要确定并在其他部分实施广告,以吸引人而不是侵扰性。对于帧率,对你来说会更好。

答案 2 :(得分:0)

尝试以单独的低优先级线程下载广告。因此,您可以确保广告加载不会占用太多CPU时间。通过一些CPU同步,您可以确保在完全准备好显示之前不要尝试显示新广告。当然,它会耗费一些CPU时间,而不是你想要做的事情,但是确定正确的优先级,只有在你忙着什么都不做的时候才应该花时间。

答案 3 :(得分:0)

请原谅这里的线程,但我已经使用Stack Overflow来帮助我解决编码过程中遇到的问题,并认为我的经验可能对将来的某些人有用。

我的简单cocos2d游戏使用了不错的FPS(很少改变FPS显示)直到我实现AdWhirl(仅集成AdMob + iAd)。然后它将在前几次迭代中运行OK,但是在第9或第10场景刷新(单屏幕游戏,每个场景中的时间平均<5秒)时,FPS将下潜到~20FPS,并且每次再次下降场景清新。

原来,在我的愚蠢(这对我来说可能是特别的:)),我从内部调用场景。也就是说,一旦动作完成,最后一个动作就是再次调用主场景(重建场景的懒惰方式让用户再次进行)。这初始化了我已插入的视图和视图控制器,以便再次处理AdWhirl广告,不仅我有内存泄漏,我还有10多个视图控制器都尝试从AdWhirl请求和维护广告。一旦我得到了线索并将自我引用的循环取出,一切都很好。