В моей игре есть сцена уровней, в которой я выбираю уровень.В этой сцене я показываю уровень, выбранный в CCLabelTTF.Теперь я хочу передать значение, отображаемое на этом ярлыке, моей главной сцене.Я делаю это следующим образом:
HelloWorld *hello=[HelloWorld getInstance]; //HelloWorld is main scene
hello.strLevel=[lblLevel string]; //strLevel is NSString to which I am passing the label text
[[CCDirector sharedDirector]replaceScene:[HelloWorld node]];
В моей сцене HelloWorld я использую синглтон, чтобы поделиться значением метки, используемой в сцене уровня.
//HelloWorld.h
@interface HelloWorld : CCColorLayer
{
NSString *strLevel;
}
@property(nonAtomic,retain)NSString *strLevel;
+(HelloWorld*)getInstance;
HelloWorld.mm
@implementation HelloWorld
@synthesize strLevel;
static HelloWorld *instance=nil;
__________________________
//Some code
__________________________
+(HelloWorld*)getInstance
{
if(instance==nil)
{
instance=[HelloWorld new];
}
return instance;
}
Однако это не работает. Как только управление достигает
instance=[HelloWorld new];
, вызывается init ().И почему бы нет.Однако, когда элемент управления возвращается к сцене уровня в строке, где я передаю значение, ничего не происходит, и HelloWorld показывает значение null для strLevel.
Я знаю, что синглтон - лучший способ передачи значений, чем AppDelegate.Но я не могу этого сделать. Кто-то может меня поправить?
Спасибо