Передача GKSession новым объектам CCLayer? - PullRequest
0 голосов
/ 20 мая 2011

Итак, я добавляю некоторые локальные сети Bluetooth с GameKit, и вот некоторые проблемы, которые я себе представляю, надеюсь, вы можете сказать мне, почему они воображаемы:

Мой GKPickerController запускается моим Меню,Объект CCLayer, который был помещен в CCSharedDirector.Как только GKPickerController устанавливает соединение, он передает GKSession моему слою меню.

Итак, теперь весь сеанс принадлежит моему меню, но я хочу поместить данные в другие объекты CCLayer (например, в саму игру!),Как мне сделать GKSession глобальным?Могу ли я просто добавить метод и передать весь сеанс новому подклассу CCLayer?Сохранит ли это всю сессию?

За тонну заранее, у меня взрыв!

1 Ответ

2 голосов
/ 23 мая 2011

Почему бы не создать класс с методом sharedInstance и сделать так, чтобы этот класс делал все глобальные вещи?

Что-то вроде:

@interface GameController : NSObject {
   GKSession *gamekit_session;
}

+ (GameController *)sharedInstance;

- (void)initGameKitSession:(NSDictionary *)config;

- (GKSession *)getGameKitSession;

- (BOOL)isMyKittenAlive;

- (void)shutdownTheInternet:(BOOL)orly;

- (float)getGlobalWarmingTemperature;

- (void)doSomeOtherGlobalStuff;

@end

Таким образом, все ваши CCLayers могут получить доступ к GKSession, позвонив по номеру [[GameController sharedInstance] getGameKitSession];. Безопаснее и элегантнее использовать эту технику, чем обойти GKSession (я не могу представить ад удержания / освобождения, в который вы собираетесь вступить ....)

...