Предварительная загрузка активов в cocos2D - PullRequest
1 голос
/ 01 февраля 2011

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

Моя проблема в том, как новые сцены запускаются в cocos2D. Рассмотрим следующий код, который встречается (с некоторыми вариациями) в нескольких местах проекта:

[[CCDirector sharedDirector] replaceScene:[CCTransitionShrinkGrow transitionWithDuration:0.5f scene:[GameplayLayer scene]]];

Это стандартный способ замены текущей сцены новой. Мой вопрос, учитывая этот формат, как мне передать предварительно загруженный ресурс в новый GameplayLayer? Есть ли приемлемый способ сделать это в cocos2D? У меня такое чувство, что мне не хватает чего-то невероятно простого, но на данный момент это для меня загадка.

1 Ответ

4 голосов
/ 02 февраля 2011

Cocos2d использует текстурный кеш, который сохраняется между сценами.Вы можете предварительно загрузить ресурсы в этот кэш в сцене загрузки, и они все равно будут доступны на вашей игровой сцене.Как вы загружаете это зависит от вас.Для изображений вы можете сделать это асинхронно, чтобы ваша сцена загрузки поддерживала приличную частоту кадров и отображала индикатор выполнения.

В этом посте изложена основная идея.

Эта тема также может быть вам полезна в этом отношении: http://www.cocos2d -iphone.org / forum / topic / 2242

Если у вас есть собственный класс активов (т.е.не поддерживаемый образ cocos2d, или что-то еще), вы можете создать свой собственный одноэлементный класс кэша (посмотрите, как реализованы экземпляры sharedManager различных классов cocos2d) и загрузить в него ваши ресурсы.Что касается управления памятью, вам придется освобождать эти ресурсы самостоятельно всякий раз, когда вы считаете это необходимым, но это скорее выходит за рамки этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...