您的位置:首页 > 编程语言 > C#

c# 数据加密

2016-04-20 11:51 423 查看
//========================================================================================================= 

//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(); 
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: