2015-06-25 2 views
1

Я пытаюсь уменьшить частоту кадров до 30 FPS. Официальная документация говорит использовать:Почему настройка frameInterval на SKView не работает?

skView.frameInterval = 2; 

Я прочитал все доступные документации, а также любой аналогичный вопрос, заданный здесь, на StackOverflow или в других страницах/блог/и т.д.. Я пробовал это по-разному, но где бы я ни пытался установить свойство, это не повлияло на FPS.

Я не использую какие-либо другие механизмы синхронизации, чем у SpriteKit. Я настраиваю его в соответствии с документацией и ответами на Stackoverflow.

Я даже запустил базовый шаблон SpriteKit с Xcode и попытался установить свойство частоты кадров, но даже это не сработало.

Кто-нибудь испытывает какие-либо сходства? Есть ли альтернативный способ уменьшить max fps? Что еще я могу попытаться уменьшить FPS?

BTW: Я работаю над OS X и имею в виду Retina Macbook Pro первого поколения - может быть, это проблема с оборудованием?

EDIT:

Я не перекрывая метод -(void)update: - только -(void)didSimulatePhysics

Это то, что я делаю в NSViewController Подкласс, который я создал в Interface Builder. self.spriteKitView является выход к NSView моего NSViewController -Subclass

-(void)setupSpriteKitView { 

    self.spriteKitView.frameInterval = 2; 
    self.spriteKitView.ignoresSiblingOrder = YES; 
    self.spriteKitView.showsFPS = YES; 
    self.spriteKitView.showsDrawCount = YES; 
    self.spriteKitView.showsNodeCount = YES; 
} 

-(void)viewDidLoad { 

    [super viewDidLoad]; 
    [self setupSpriteKitView]; 
    [self loadStartupScene]; 
} 

Я даже пытался поставить это в моем SKScene-Подкласс прикрепить его в качестве пользователя-свойства внутри Interface Builder к SKView.

Как я теперь не работаю? Как в моей игре, так и в шаблоне Xcode вывод отладки говорит о 60 FPS. И даже при уменьшении skView.frameInterval = 4 анимации остаются гладкими.

+1

Откуда вы знаете, что это не работает? Отправьте фрагмент кода для вашего SKView. – sangony

+0

@sangony Отладка выводит 60 кадров в секунду. Обновлен мой вопрос с помощью фрагментов. –

+1

Если этот код находится в подклассе 'SKView', то что такое' self.spriteKitView'? – Droppy

ответ

0

Ok! Поскольку часы работы на этом, выясняя, что я делаю неправильно, я протестировал шаблон Xcode SpriteKit. Удивительно, что даже этот Apple, предоставленный образец кода, не реагирует на свойство skView.frameInterval.

Так что я думал об аппаратной ошибке и искал форумы на яблоках для этого. То, что я нашел, было несколько человек, жалующихся на ту же проблему, и на удивление Apple знает об этом FPS-Bug и исправит это в el capitan ... Надеюсь ... Я собираюсь проверить dev prerelease!

Однако, есть довольно еще некоторые ошибки в SpriteKit на OS X! Например, при переключении окна в полноэкранный режим FPS падает спорадически на неопределенное количество. Это немного испорчено!

EDIT:

Благодаря @EpicByte я нашел несколько причин и ответы. См. Его объяснение в комментариях выше!

+0

Были ли у вас возможность найти решение или она все еще была глючит? – mattgabor

+0

Не удалось проверить это, но как только это произойдет, я опубликую обновление! –