c# 数据加密

//========================================================================================================= 
//Note: Data Managing. 
//========================================================================================================= 
using UnityEngine; 
using System.Collections; 
using System.IO; 
using System.Collections.Generic; 
using System; 
using System.Text; 
using System.Xml; 
using System.Security.Cryptography; 
//GameData,储存数据的类,把需要储存的数据定义在GameData之内就行// 
public class GameData 

//密钥,用于防止拷贝存档// 
public string key; 

//下面是添加需要储存的内容// 
public string PlayerName; 
public float MusicVolume; 
public int MaxScore;
public int MillitaryLevel;  // 0, 1, 2  分别对应少尉 中尉 上尉
public bool BoundWithSNS;
public int CashNo;
public int EneryQuotas;
public int guiderVals;
public int joinGuiderVal;
public bool guiderSwitch;
public int birdsNo;
public int exitTime;
public int playerExp;
public GameData() 

PlayerName = "Player"; 
MusicVolume = 0.6f;
MaxScore = 0;
EneryQuotas = 2500;
CashNo =10;
BoundWithSNS = false;
MillitaryLevel = 0;
guiderVals = 1;
joinGuiderVal = 1;
guiderSwitch = true;
birdsNo = 5;
exitTime = 0;
playerExp = 1;




public class MainShipData 

//密钥,用于防止拷贝存档// 
public string key;  

//下面是添加需要储存的内容// 
public string saveName;
public int IniShipLevelNo; 
public int MaxShipLevel; 
public int shipLevelNo;
public int shipUpgreadeLevelATK;  // 0, 1, 2  分别对应少尉 中尉 上尉
public int shipUpgreadeLevelArm;
public int shipUpgreadeLevelShiled;
public bool isOwned;
public string childWing;
public string childSeco;
public bool isCurrentUse;

//public 

public MainShipData() 

saveName = "Player"; 
IniShipLevelNo = 1;
MaxShipLevel = 1;
shipLevelNo = 1;
shipUpgreadeLevelATK = 0;
shipUpgreadeLevelArm = 0;
shipUpgreadeLevelShiled = 0;
isOwned = false;
childWing = "null";
childSeco = "null";
isCurrentUse = false;

}


//管理数据储存的类// 
public class GameDataManager:MonoBehaviour 

private string dataFileName ="SABData.dat";//存档文件的名称,自己定// 
private  XmlSaver xs = new XmlSaver(); 

public  GameData gameData; 

public void Awake() 
{
if(GameManager.gameDateOneTime == false){
gameData = new GameData(); 

//设定密钥,根据具体平台设定//


gameData.key = SystemInfo.deviceUniqueIdentifier; 

Load(); 
GameManager.energy = gameData.EneryQuotas;
// print("gameData.EneryQuotas;_______________________________" + gameData.EneryQuotas);
GameManager.gem = gameData.CashNo;
GameManager.heightesScore = gameData.MaxScore;
GameManager.volumeNo = gameData.MusicVolume;
GameManager.guideVal =  gameData.guiderVals;
GameManager.val  = gameData.joinGuiderVal;
GameManager.guideModel = gameData.guiderSwitch;
GameManager.gameDateOneTime = true;

System.DateTime currentTime=new System.DateTime();
currentTime=System.DateTime.Now; 
int intA = int.Parse (currentTime.ToString("HHmmss"));
int tempTimeAddShip =(int) (Mathf.Abs(gameData.exitTime - intA)/GameManager.buildOneWarBirdsTime);
GameManager.buildWarBirdsNos = gameData.birdsNo + tempTimeAddShip;
//和当前的机库数量的对比


if(GameManager.buildWarBirdsNos >= GameManager.buildWarBirdsMaxNo){
GameManager.buildWarBirdsNos = GameManager.buildWarBirdsMaxNo;
}


//print(GameManager.guideVal + "______" + GameManager.guideModel + GameManager.guideModel + gameData.guiderSwitch);
}


//存档时调用的函数// 
public  void Save() 

string gameDataFile = GetDataPath() + "/"+dataFileName; 
string dataString= xs.SerializeObject(gameData,typeof(GameData)); 
xs.CreateXML(gameDataFile,dataString); 


//读档时调用的函数// 
public void Load() 

string gameDataFile = GetDataPath() + "/"+dataFileName; 
if(xs.hasFile(gameDataFile)) 

string dataString = xs.LoadXML(gameDataFile); 
GameData gameDataFromXML = xs.DeserializeObject(dataString,typeof(GameData)) as GameData; 

//是合法存档// 
if(gameDataFromXML.key == gameData.key) 

gameData = gameDataFromXML; 

//是非法拷贝存档// 
else 

//留空:游戏启动后数据清零,存档后作弊档被自动覆盖// 


else 

if(gameData != null) 
Save(); 



//获取路径// 
public static string GetDataPath() 

// Your game has read+write access to /var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Documents 
// Application.dataPath returns ar/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/myappname.app/Data              
// Strip "/Data" from path 
if(Application.platform == RuntimePlatform.IPhonePlayer) 

string path = Application.dataPath.Substring (0, Application.dataPath.Length - 5); 
// Strip application name 
path = path.Substring(0, path.LastIndexOf('/'));  
return path + "/Documents"; 

else 
//    return Application.dataPath + "/Resources"; 
return Application.dataPath; 

//在退出的时候写入当前需要保存的讯息

public void SaveInfo()
{
gameData.EneryQuotas =  GameManager.energy +  GameManager.tempEnergy;
gameData.CashNo = GameManager.gem;
gameData.MaxScore = GameManager.heightesScore;
gameData.MusicVolume =  GameManager.volumeNo;
gameData.guiderVals = GameManager.guideVal;
gameData.joinGuiderVal = GameManager.val;
gameData.guiderSwitch = GameManager.guideModel;
gameData.birdsNo = GameManager.buildWarBirdsNos;
System.DateTime currentTime=new System.DateTime();
currentTime=System.DateTime.Now; 
int intA = int.Parse (currentTime.ToString("HHmmss"));
gameData.exitTime = intA;
gameData.playerExp = GameManager.playerExperience;
//print("gameData.EneryQuotas;+++++++++++++++++++" + gameData.EneryQuotas);
Save(); 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值