很好有一個單一類(共享對象),維護所有的統計數據。
示例:說MyGame用於存儲所有遊戲統計信息。 //在MyGame.h
typedef enum
{
kGameMode_Practice = 1001,
kGameMode_Stress,
kGameMode_TimeBattle,
}GameMode;
@interface MyGame: NSObject
{
GameMode mGameMode;
int mHighScore;
}
@property(nonatomic,assign) GameMode gameMode;
@屬性(非原子,分配)INT高分;
+(MyGame*)sharedGameObject;
//在MyGame中。毫米
static MyGame *gGame = nil;
@implementation MyGame
@synthesize gameMode=mGameMode;
@synthesize highScore=mHighScore;
+(MyGame*)sharedGameObject
{
if(!gGame)
{
gGame = [[MyGame alloc] init];
}
return gGame;
}
-(void)saveData //Call this from applicationWillResignActive
{
NSUserDefaults *userDafs = [NSUserDefaults standardUserDefaults];
[userDafs setInteger:self.highScore forKey:@"highScore"];
[userDafs setInteger:self.gameMode forKey:@"gameMode"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
-(void)loadData //call this from UIApplication didFinishLaunchingWithOptions
{
NSUserDefaults *userDafs = [NSUserDefaults standardUserDefaults];
self.highScore = [userDafs integerForKey:@"highScore"]
self.gameMode = (GameMode)[userDafs integerForKey:@"gameMode"]
}
//你可以選擇菜單按鈕來設置遊戲模式
[MyGame sharedGameObject].gameMode = kGameMode_Practice
//在遊戲
if([MyGame sharedGameObject].gameMode == kGameMode_Practice)
而且隨時隨地查詢保存在應用程序終止和負載這些值當應用程序啓動時相同
[[MyGame sharedGameObject] saveData];
基於遊戲模式,您可以更改遊戲玩法。使用單一的一般類遊戲的邏輯和檢查遊戲模式,並做調整..當你設計3種單獨的類爲3types然後改變一個需要更新所有文件在將來..所以儘可能有通用代碼。
這就是我個人會用到的 - 我相信你可以從中獲取設置的單例是實現你想要的最簡單的方法。 –
我認爲這很有用,但是最終會出現很多if和switch,代碼會變成口袋裏的耳機。我以後也會在遊戲中支持多人遊戲。我會在遊戲管理器中佈置一個布爾值來告訴它是否是多人遊戲?多人遊戲將以回合爲基礎,因此除了只允許部分遊戲模式外,遊戲不會依賴遊戲。 (不需要無盡的練習模式,當多人模式時) – chrs
是的,就像highScore,你可以使用一個更多的布爾變量來維護關於多人遊戲的狀態或不是..希望你有想法。你也需要在遊戲開始和結束時保存並加載NSUserDefaults中的這些統計數據。 – Guru