#cocos2d-iphone #iad #frame-rate
#cocos2d-iphone #iad #частота кадров
Вопрос:
Баннер iAd снижает частоту кадров в секунду?
Действительно, с тех пор, как я добавил iAd, мой FSP — дерьмо. Мне было 59 лет всю игру, и теперь он варьируется от 35-50 кадров в секунду.
Любые идеи, пожалуйста, потому что моя игра почти не воспроизводится с этим баннером.
Спасибо за помощь.
Комментарии:
1. устройство? симуляторы кадров в секунду бессмысленны.
2. Многие недавние вопросы предполагают, что iAd начал замедлять игры (в том числе и Sprite Kit). Возможно, проблема, характерная для бета-версии iOS 8?
3. Спасибо за ответы. Я разрабатываю версию iOS 7.1, а не бета-версию 8. Я запускаю все на своем устройстве напрямую, а не с помощью симулятора. Спасибо.
4. Недавно я добавил iAd в игру 7.1 и не заметил заметного ухудшения пользовательского опыта (и не измерял)… но — я принудительно фиксирую частоту кадров в секунду на уровне 30, поскольку чувствую, что дрожание является наиболее важным фактором при оценке плавности игры. Если вы можете себе это позволить, попробуйте. Езда на дробовике на скорости, максимально приближенной к 60 кадрам в секунду, приводит к почти уверенной игре с джиттербагом на изометриях.
5. Привет, YvesBlorg, извините, но я не получил вашего совета, можете ли вы переформулировать, пожалуйста 🙂 (Я француз, лол).
Ответ №1:
Вы должны реализовать логику iAd в своем UINavigationController
подклассе, которая была установлена в appDelegate
. В моем коде это выглядит так:
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Create the main window
window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds]
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
// Enable multiple touches
[glView setMultipleTouchEnabled:YES];
director_ = (CCDirectorIOS*) [CCDirector sharedDirector];
director_.wantsFullScreenLayout = YES;
// Display FSP and SPF
[director_ setDisplayStats:YES];
// set FPS at 60
[director_ setAnimationInterval:1.0/60];
//FEW LINES LATER
// Create a Navigation Controller with the Director
navController_ = [[MyNavigationController alloc] initWithRootViewController:director_];
navController_.navigationBarHidden = YES;
[self checkDeviceType];
// setup iAds bannerView
[self setupIADs];
// for rotation and other messages
[director_ setDelegate:navController_];
// set the Navigation Controller as the root view controller
[window_ setRootViewController:navController_];
// make main window visible
[window_ makeKeyAndVisible];
return YES;
}
- (void)setupIADs {
CGSize size = [[CCDirector sharedDirector] winSize];
float bannerHeight = _isiPadRunning ? 66.0f : 50.0f;
ADAdType bannerType = _isiPadRunning ? ADAdTypeMediumRectangle : ADAdTypeBanner;
_bannerView = [[ADBannerView alloc] initWithAdType:bannerType];
_bannerView.frame = CGRectMake(0, navController_.view.frame.size.height, size.width, bannerHeight);
CGSize newBannerSize = [_bannerView sizeThatFits:CGSizeMake(size.width, bannerHeight)];
_bannerView.frame = CGRectMake(0, navController_.view.frame.size.height,
newBannerSize.width, newBannerSize.height);
_bannerView.delegate = self;
//get view
UIView *mainView = [navController_ view];
[mainView addSubview:_bannerView];
[mainView setNeedsLayout];
}
Как вы можете видеть, я использую navController_
для размещения баннера iAd. Никаких падений кадров в секунду! 🙂
Пожалуйста, попробуйте. Для меня это помогло, и у меня нет падений или задержек в FPS. Все работает отлично.