Итак, у меня есть игра, в которой я работаю над использованием cocos2d. В игре задействовано много вражеских снарядов, а также несколько дружественных снарядов для столкновения с вражескими снарядами.Оптимизация производительности - Кэш объектов
Оба противника и дружелюбные снаряды объекты, обладающие свойствами, такие как:
- спрайт (используется для CCMoveTo, действия)
- хитбокса (CGRect)
- длительности путешествия
- траектория
У этого также есть методы для расчета времени в пути, траектории и других вещей, которые определяются на основе случайное место появления.
В настоящее время я создаю эти объекты каждый раз, когда создается снаряд, добавляя их в массивы (т. Е. FriendlyProjectiles, enemyProjectiles), итерации через них для обнаружения столкновений и отпускания объекта при столкновении.
Было бы лучше использовать кеш для объектов здесь?
Например:
- при запуске создать 100 объектов снаряда противника, 5 дружеского снаряда Объекты
- места этих объекты на стеке
- когда снаряд породившие, вместо того, чтобы создать объект, я pop из стека
- , когда снаряд сталкивается и разрушается, вместо того, чтобы отпускать объект, я просто удаляю его из слоя и массива и нажимаю его обратно на стек
- когда возникает снаряд, мне еще нужно рассчитать его траекторию, скорость, расстояние и т. д., но мне не нужно воссоздать объект
Это хороший подход?
Я относительно новичок в Objective C, столкнулся бы с проблемами, когда я пытаюсь одновременно нажать и вытащить в стек?
Ваши снаряды являются подклассом CCSprite, или у вас есть CCSprite? если бы вы были подклассом, вы могли бы просто добавить их в свой прожектор, а затем удалить их, когда диктует ваша физическая логика. –
Снаряды в настоящее время не являются подклассом CCSprite, но каждый из них имеет CCSprite в качестве свойства. – NMunro
если симулятор отстает, то могу с уверенностью сказать, что на устройстве будет плохо. –