を発行します。applicationWillTerminate/ApplicationDidEnterBackgroundは、私はこれを解決するためにあなたの助けが必要
私は/負荷gamestate Save Game State Tutorialを保存する方法についてのチュートリアルを発見し、私は自分自身で非常によくやったが、私は捕まってしまったと思います。
このすべての最初には、私がバックグラウンドにゲームを動かす時に、ゲームを終了時に保存するために必要なものです。
* Playerscore
*ハイスコア
*レベル
*時間
*グリッドとその上にレンガ(グリッドは6×6で、私はあることに35個のレンガを持っていますグリッド内で移動可能)//このパーツを保存/ロードする方法を知らない
*ルビーの量
*音楽ボタンとSFXボタンがオンまたはオフの場合の設定状態//このパーツの保存/ロード方法がわからない
*音楽の状態は、この部分を保存/ロードする方法がわからない場合
Ready、Set、Go画像で一時停止状態でゲームをロードする方法がわかりませんユーザーが中断した場所から開始する前に表示されます。 (私のUIApplicationDelegateでapplicationDidEnterBackgroundとapplicationWillTerminateに接続する方法は分かりません。保存部分と同じです)
次に、保存されたgamestateがあるかどうかをメインメニューにして、ゲームを続けてください。
次のコードは、私がmainmenu.mファイルで、私のgameview.mファイルでやった方法を示しています。あなたにもgamecontrollerを見たい場合は、私に教えてください...
mainmenu.h //ゲームコントローラ GameController * sharedGameController。
mainmenu.m
//The game begins either by continue or by resetting the gamestate
-(IBAction)start{
NSLog(@"Start");
newgame.hidden = NO;
if(sharedGameController.resumedGameAvailable == YES){
//IF there is a gamestate saved then activate the continue button
continuegame.hidden = YES;
continuegame.alpha = 1.0;
continuegame.enabled = YES;
}
else{
continuegame.hidden = NO;
continuegame.alpha = 0.5;
continuegame.enabled = NO;
}
korridor1.hidden = NO;
fackla.hidden = NO;
Start.hidden = YES;
option.hidden = YES;
howtoplay.hidden = YES;
SFXimage.hidden = YES;
Musicimage.hidden = YES;
back.hidden = NO;
}
//Continue previous game
-(IBAction)ContinueGame{
[audio stop];
audio.numberOfLoops = 0;
[audio release];
NSLog(@"Continue");
back.hidden = YES;
newgame.hidden = YES;
continuegame.hidden = YES;
korridor1.hidden = NO;
fackla.hidden = YES;
Start.hidden = YES;
option.hidden = YES;
howtoplay.hidden = YES;
SFXimage.hidden = YES;
Musicimage.hidden = YES;
[UIView beginAnimations:@"korridor_1.png" context:nil];
[UIView setAnimationDuration:1];
korridor1.transform = CGAffineTransformMakeScale(13,13);
korridor1.alpha = 1.0f;
[UIView commitAnimations];
//The Game begins
[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(GameView) userInfo:nil repeats:NO];
}
gameview.m
//Load the saved gamestate
- (void)loadGameState {
// Set up the file manager and documents path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; NSMutableData *gameData;
NSKeyedUnarchiver *decoder;
NSString *documentPath = [documentsDirectory stringByAppendingPathComponent:@"gameState.dat"];
gameData = [NSData dataWithContentsOfFile:documentPath];
decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData];
NSLog(@"INFO - GameScene: Loading saved game duration.");
//timeSinceGameStarted = [[decoder decodeObjectForKey:@"timeSinceGameStarted"] floatValue];
NSLog(@"INGO - GameScene: Loading saved game score.");
playerscore = [[decoder decodeObjectForKey:@"playerscore"] floatValue];
NSLog(@"INGO - GameScene: Loading saved high score.");
highscore = [[decoder decodeObjectForKey:@"highscore"] floatValue];
NSLog(@"INGO - GameScene: Loading saved level.");
level = [[decoder decodeObjectForKey:@"Level"] floatValue];
NSLog(@"INGO - GameScene: Loading saved amount of rubies.");
totalrubies = [[decoder decodeObjectForKey:@"totalrubies"] floatValue];
NSLog(@"INFO - GameScene: Loading game time data.");
[decoder release];
}
//Saving the current gamestate
-(void)saveGameState {
NSLog(@"Saving game state");
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];
// Archive the games timer settings
NSNumber *savedGameStartTime = [NSNumber numberWithFloat:totalSeconds];
//NSNumber *savedTimeSinceGameStarted = [NSNumber numberWithFloat:timeSinceGameStarted];
// Archive the players score
NSNumber *savedPlayerScore = [NSNumber numberWithFloat:playerscore];
// Archive the games high score
NSNumber *savedHighScore = [NSNumber numberWithFloat:highscore];
// Archive the current game level
NSNumber *savedcurrentlevel = [NSNumber numberWithFloat:level];
// Archive the total amount of rubies
NSNumber *savedTotalRubies = [NSNumber numberWithFloat:totalrubies];
[encoder encodeObject:savedGameStartTime forKey:@"gameStartTime"];
//[encoder encodeObject:savedTimeSinceGameStarted forKey:@"timeSinceGameStarted"];
[encoder encodeObject:savedPlayerScore forKey:@"playerscore"];
[encoder encodeObject:savedHighScore forKey:@"highscore"];
[encoder encodeObject:savedcurrentlevel forKey:@"Level"];
[encoder encodeObject:savedTotalRubies forKey:@"totalrubies"];
// Finish encoding and write the contents of gameData to file
[encoder finishEncoding];
[gameData writeToFile:gameStatePath atomically:YES];
[encoder release];
// Tell the game controller that a resumed game is available
sharedGameController.resumedGameAvailable = YES;
}
私はすでにそれを持っています。私はそれが負荷gamestateからロードするために来たとき別の方法があったと思った... – iphonedevonthemake