Я делаю игру в cocos2d. В игровой сцене есть кнопка меню для возврата в главное меню, которое представляет собой UIViewController. Когда пользователь выбирает снова играть, и та же игровая сцена вызывается для запуска в директоре, поверх игровой сцены появляется розовый экран.
Это может быть из-за замены той же самой сцены самой собой. Итак, я заменил его пустой сценой, когда вызывается главное меню. Код, заменяющий сцену:
if ([[CCDirector sharedDirector] runningScene] == NULL) {
[[CCDirector sharedDirector] runWithScene: [MySceneLayer scene]];
}
else {
[[CCDirector sharedDirector] replaceScene:[MySceneLayer scene]];
}
Проверяет, не запущена ли сцена, а затем запускает игровую сцену в первый раз. Если какая-то сцена уже запущена, которая в данном случае является пустой, то заменяет ее игровой сценой. Также называется сделка игровой сцены, что означает, что старая сцена уничтожена должным образом. Даже тогда замена пустой сцены игровой сценой дает розовый экран, тогда как замена любой другой новой сцены не доставляет никаких проблем.
В чем может быть причина и каково решение?