|
|
1 mese fa | |
|---|---|---|
| .. | ||
| BackgroundManager.ts | 2 mesi fa | |
| BackgroundManager.ts.meta | 4 mesi fa | |
| BackgroundUsageExample.md | 4 mesi fa | |
| BackgroundUsageExample.md.meta | 4 mesi fa | |
| CombatStateManager.ts | 5 mesi fa | |
| CombatStateManager.ts.meta | 5 mesi fa | |
| GameManager.meta | 5 mesi fa | |
| GameManager.ts | 1 mese fa | |
| GameManager.ts.meta | 5 mesi fa | |
| IN_game.ts | 1 mese fa | |
| IN_game.ts.meta | 4 mesi fa | |
| LevelConfigManager.ts | 1 mese fa | |
| LevelConfigManager.ts.meta | 5 mesi fa | |
| LevelManager.ts | 4 mesi fa | |
| LevelManager.ts.meta | 5 mesi fa | |
| LevelStateManager.ts | 5 mesi fa | |
| LevelStateManager.ts.meta | 5 mesi fa | |
| README_SaveSystem.md | 4 mesi fa | |
| README_SaveSystem.md.meta | 5 mesi fa | |
| SaveDataManager.ts | 1 mese fa | |
| SaveDataManager.ts.meta | 5 mesi fa | |
| StartGame.ts | 3 mesi fa | |
| StartGame.ts.meta | 4 mesi fa | |
| UIStateManager.ts | 3 mesi fa | |
| UIStateManager.ts.meta | 5 mesi fa | |
本存档系统为Pong游戏提供完整的玩家进度保存和管理功能,记录玩家的关卡进度、货币、道具、统计数据等信息。
// 获取存档管理器实例
const saveManager = SaveDataManager.getInstance();
saveManager.initialize();
// 获取墙体等级
const wallLevel = saveManager.getWallLevel();
const currentLevel = saveManager.getCurrentLevel();
const coins = saveManager.getMoney();
// 完成关卡
saveManager.completeLevel(levelId, score, time, stars);
// 添加货币
saveManager.addMoney(amount, 'level_complete');
saveManager.addDiamonds(amount, 'daily_reward');
// 在GameManager中初始化
private saveDataManager: SaveDataManager = null;
start() {
this.saveDataManager = SaveDataManager.getInstance();
this.saveDataManager.initialize();
}
// 游戏成功时
private onGameSuccess() {
const currentLevel = this.saveDataManager.getCurrentLevel();
const score = this.calculateScore();
const time = this.getGameDuration();
const stars = this.calculateStars();
this.saveDataManager.completeLevel(currentLevel, score, time, stars);
}
// 游戏失败时
private onGameDefeat() {
const currentLevel = this.saveDataManager.getCurrentLevel();
this.saveDataManager.failLevel(currentLevel);
}
// 在MainUIController中使用
export class MainUIController extends Component {
private saveDataManager: SaveDataManager = null;
start() {
this.saveDataManager = SaveDataManager.getInstance();
this.saveDataManager.initialize();
this.updateUI();
}
updateUI() {
// 更新墙体等级显示
const wallLevel = this.saveDataManager.getWallLevel();
this.wallLevelLabel.string = `墙体等级: ${wallLevel}`;
// 更新货币显示
const coins = this.saveDataManager.getMoney();
this.coinsLabel.string = coins.toString();
}
}
interface PlayerData {
// 基本信息
playerId: string;
playerName: string;
createTime: number;
lastPlayTime: number;
totalPlayTime: number;
// 墙体等级
wallLevel: number;
// 货币系统
coins: number;
diamonds: number;
// 关卡进度
currentLevel: number;
maxUnlockedLevel: number;
levelProgress: { [levelId: number]: LevelProgress };
// 道具和装备
inventory: InventoryData;
// 统计数据
statistics: GameStatistics;
// 设置
settings: PlayerSettings;
}
interface LevelProgress {
levelId: number;
completed: boolean;
bestScore: number;
bestTime: number;
attempts: number;
firstClearTime: number;
lastPlayTime: number;
rewards: RewardData[];
}
getWallLevel(): 获取墙体等级getCurrentLevel(): 获取当前关卡getMaxUnlockedLevel(): 获取最高解锁关卡getCoins(): 获取金币数量getDiamonds(): 获取钻石数量completeLevel(levelId, score, time): 完成关卡failLevel(levelId): 关卡失败getLevelProgress(levelId): 获取关卡进度isLevelUnlocked(levelId): 检查关卡是否解锁isLevelCompleted(levelId): 检查关卡是否完成addCoins(amount, source): 添加金币spendCoins(amount): 消费金币addDiamonds(amount, source): 添加钻石spendDiamonds(amount): 消费钻石upgradeWallLevel(): 升级墙体等级getWallUpgradeCost(): 获取墙体升级费用canUpgradeWall(): 检查是否可以升级墙体addWeapon(weaponId, rarity): 添加武器addItem(itemId, count): 添加道具useItem(itemId, count): 使用道具savePlayerData(force): 保存玩家数据checkAutoSave(): 检查自动保存resetAllData(): 重置所有数据exportSaveData(): 导出存档数据importSaveData(dataString): 导入存档数据updateSetting(key, value): 更新设置getSetting(key): 获取设置值// 在游戏启动时初始化存档系统
const saveManager = SaveDataManager.getInstance();
saveManager.initialize();
// 显示玩家信息
const wallLevel = saveManager.getWallLevel();
const currentLevel = saveManager.getCurrentLevel();
const coins = saveManager.getMoney();
// 获取当前关卡信息
const currentLevel = saveManager.getCurrentLevel();
const isUnlocked = saveManager.isLevelUnlocked(currentLevel);
// 记录游戏统计数据
saveManager.updateStatistic('totalShotsfired', 1);
saveManager.updateStatistic('totalEnemiesDefeated', 1);
// 记录关卡完成
const score = calculateScore();
const time = getGameDuration();
saveManager.completeLevel(currentLevel, score, time);
// 给予奖励
saveManager.addMoney(baseReward, 'level_complete');
// 记录关卡失败
saveManager.failLevel(currentLevel);
// 保存数据
saveManager.savePlayerData(true);
系统提供了多个调试方法:
getSaveSummary(): 获取存档摘要信息exportSaveData(): 导出存档数据用于调试resetAllData(): 重置所有数据用于测试系统设计具有良好的扩展性,可以轻松添加:
通过修改相应的接口定义即可扩展功能,无需大幅修改现有代码。