Пожалуйста, кто-нибудь может указать мне на любой учебник или дать мне краткое описание шагов, которые нужно предпринять, чтобы показать, как отображать статистику игры, например, "очки", когда игра заканчивается на Cocos2d-iphone, мне нужно некоторое руководство, чтобы реализоватьсцена завершения уровня для игры, где по завершении или в конце игры появляется экран завершения уровня, на котором отображаются результаты, использованное время и имя игрока, как видно в большинстве игр.Я провел некоторое исследование, и до сих пор я видел примеры, когда состояние игры было сохранено с использованием NSKeyedArchiver и NSKeyedUnarchiver, как показано в коде ниже:
В методе applicationWillTerminate в appdelegate.mm
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *gameStatePath = [documentsDirectory
stringByAppendingPathComponent:@"gameState.dat"];
NSMutableData *gameData;
NSKeyedArchiver *encoder;
gameData = [NSMutableData data];
encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:gameData];
[encoder encodeDouble:[[GameManager sharedGameManager]bestTime] forKey:@"bestTime"];
[encoder encodeInteger:[[GameManager sharedGameManager]livesLeft]
forKey:@"livesLeft"];
[encoder encodeInteger:[[GameManager sharedGameManager]currentLevel]
forKey:@"currentLevel"];
[encoder finishEncoding];
[gameData writeToFile:gameStatePath atomically:YES];
[encoder release];[/code]
и в моем файле levelComplete.mm у меня есть
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSMutableData *gameData;
NSKeyedUnarchiver *decoder;
NSString *documentPath = [documentsDirectory
stringByAppendingPathComponent:@"gameState.dat"];
gameData = [NSData dataWithContentsOfFile:documentPath];
if(gameData) {
decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData];
[[GameManager sharedGameManager] setCurrentLevel:[decoder
decodeIntegerForKey:@"currentLevel"]];
[[GameManager sharedGameManager] setlivesLeft:[decoder
decodeIntegerForKey:@"livesLeft"]];
[[GameManager sharedGameManager] setBestTime:[decoder
decodeDoubleForKey:@"bestTime"]];
[decoder release];
После этой информации я, похоже, застрял в следующем шаге, и я не знаю, является ли это правильным способомидти.Я буду очень рад любым предложениям или планам относительно пути реализации этого.
Также в моем проекте есть одноэлементный класс, gameplayLayer и слой HUD, где в настоящее время отображаются эти переменные.
Спасибо