Я делаю свою первую игру с Swift и SpriteKit и заметил, что моя игра быстро приближается к 100% использованию процессора. Я недавно публиковал об этом недавно, но сейчас я сейчас пытаюсь разделить его, чтобы определить, где мои проблемы. Первоначально я думал, что моя проблема заключалась в создании новых врагов, поэтому я удалил все, кроме маленького контролируемого пользователем космического корабля и его функции съемки. Тем не менее, я по-прежнему проигрываю 100% после пары минут «игры». Я использую инструмент профилирования времени, чтобы попытаться выяснить, что происходит, но у меня проблемы. Я разбил временную строку:Высокое использование ЦП в игре SpriteKit
Вот первый подграф, когда пользователь нажимает кнопку homeScene
, чтобы ввести GameScene
.
Я не совсем уверен, что означают красные и желтые «самые тяжелые задники» с 3256x и 861x, но из учебников, которые я видел, я бы предположил, что они аномально высоки. Вот дерево вызовов, а также:
Я тоже не совсем уверен, почему текстуры контроллер будет использовать так же, как они просто установив две текстуры в файле непосредственно перед GameScene
класса:
let controllerBaseTexture = SKTextureAtlas(named:"Sprites").textureNamed("controllerBase")
let controllerHandleTexture = SKTextureAtlas(named:"Sprites").textureNamed("controllerHandle")
class GameScene: SKScene, SKPhysicsContactDelegate {
Тогда вот дерево вызовов, когда начинается игра, и когда CPU достигает 100%:
Я тоже запутался о том, что «UnsaveMutableAddressors», как я вижу их очень часто при попытке отладить этот код.
Я знаю, что это много, но я не уверен, с чего начать. Любые предложения были бы замечательными. Я также хотел бы знать, есть ли хорошие ресурсы о том, как лучше интерпретировать это, потому что я прошел через горстку, и я все еще очень застрял.
Спасибо за помощь!
Вы действительно подсчитали количество раз, когда вызывается startGame? Теоретически его следует называть только один раз? –
Вы вызываете GameScene.init из каждого вызова update(). Исправьте основную логику вашей игры, поскольку это явно не то, что нужно делать в обновлении. – MoDJ
@MobileBen @ MoDJ Вы говорите строго о начале раздела - во время загрузки? Потому что там есть задержка, и это будет иметь смысл, но реальной проблемой является использование ЦП во время игры (средняя часть), которая не имеет никакой конкретной ссылки AlienAnnhilator? – Sam