Короче:Cleaner (лучше) альтернатива использованию функции обновления в Swift
Есть ли лучший способ запустить большие функции в течение длительного времени, что меньше «lagy» и память оскорбительным, чем положить все это в функция обновления?
Полный вопрос
Я в настоящее время в завершающей стадии разработки своего первого приложения игры с использованием IOS Swift и SpriteKit. Одна из больших проблем, которые я получил, - отставание/задержка. Инструмент Time Profiler указал, что мой override func update
использовал много памяти и времени. Моя функция обновления состоит из:
override func update(currentTime: CFTimeInterval) {
if hasStarted {
// Character
updateCharacterPosition()
updateJumpMotion()
// Blocks
blockRunnerDebug()
// Wave
debugRunningBarPosition()
// Game Engine
gameEngine()
debugGameEngine()
}
// Update Scenery
updateScenery()
}
Как видите, у него много функций. Большинство из них выполняют фоновые анимации, такие как вода, облака или прыгающая анимация персонажа.
Пример:
// Move y
self.cloud01.position.y = self.cloud01.position.y + (CGFloat(createSinWave(0.5, b: b, angle: angle))) * 0.3
self.cloud02.position.y = self.cloud02.position.y + (CGFloat(createSinWave(0.5, b: b, angle: angle))) * 0.3
Мой вопрос: есть ли лучший способ запустить большие функции в течение длительного времени, что меньше «lagy» и память оскорбительным, чем положить все это в функции обновления?
Благодаря
Каков наилучший способ сделать это? 'SKAction.runBlock'? –
Да. Это зависит от того, что вы делаете, если run block является «лучшим», но, вероятно, так. Что-то по строкам: runAction (SKAction.repeatActionForever (SKAction.runBlock (doAction))) – Jeremiah
Хорошо, спасибо! Попробуй это. –