using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
* Author:W
* 备忘录模式:游戏对象状态【数据】的存盘功能实现
* 针对游戏中有记录状态数据(也有可能有多份即不同版本的)需求的系统,可以专门设计对应的记录类来完成这部分工作。
* 比如AchievmentSystem成就系统,可以设计个AchievementSaveData类来负责保存和读取成就相关数据 。
*/
namespace W_Memento
{
/// <summary>
/// 成就系统需要存盘的数据的管理类
/// </summary>
public class AchievementSaveData
{
public int EnmeyKilledCount { get; set; }
public int SoliderKilledCount { get; set; }
public AchievementSaveData() { }
/// <summary>
/// 存储
/// </summary>
public void SaveData()
{
PlayerPrefs.SetInt("EnmeyKilledCount", EnmeyKilledCount);
PlayerPrefs.SetInt("SoliderKilledCount", SoliderKilledCount);
}
/// <summary>
/// 读取
/// </summary>
public void LoadData()
{
EnmeyKilledCount = PlayerPrefs.GetInt("EnmeyKilledCount",0);
SoliderKilledCount = PlayerPrefs.GetInt("SoliderKilledCount",0);
}
}
public class AchievementSystem
{
private AchievementSaveData lastData = null;
private int EnmeyKilledCount = 0;
private int SoliderKilledCount = 0;
/// <summary>
/// 成就相关数据存取
/// </summary>
private void CreateSaveData()
{
AchievementSaveData achievementSaveData = new AchievementSaveData();
achievementSaveData.EnmeyKilledCount = Mathf.Max(EnmeyKilledCount,lastData.EnmeyKilledCount);
achievementSaveData.SoliderKilledCount = Mathf.Max(SoliderKilledCount, lastData.SoliderKilledCount);
achievementSaveData.SaveData();
}
/// <summary>
/// 成就相关数据读取
/// </summary>
private void LoadSaveData()
{
AchievementSaveData achievementSaveData = new AchievementSaveData();
achievementSaveData.LoadData();
lastData = achievementSaveData;
}
}
/// <summary>
/// 如果有需要的话,如游戏有多个系统有存盘的需求时,可以建个游戏数据存盘系统来统一管理控制
/// </summary>
public class GameDataSaver
{
}
}
游戏设计模式-备忘录模式
最新推荐文章于 2024-12-21 14:58:44 发布