注释
unity保存关键数据的的方法和解析方法,防止用户改动
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;public class UserData
{public int id;
}
public class Test : MonoBehaviour
{// 随便选取一些用于亦或的字符(看自己喜欢:注意保密)public static char[] keyChars = { 'a', 'b', 'c', 'd', 'e' };// 加密public static string Encrypt(string data){char[] dataChars = data.ToCharArray();for (int i = 0; i < dataChars.Length; i++){char dataChar = dataChars[i];char keyChar = keyChars[i % keyChars.Length];// 重点:通过亦或得到新的字符char newChar = (char)(dataChar ^ keyChar);dataChars[i] = newChar;}return new string(dataChars);}// 解密public static string Decrypt(string data){// 两次亦或执行的是同样的操作return Encrypt(data);}// 修改:存数据的时候进行第一次亦或public static void SaveUserData(UserData userData){// ...string jsonData = JsonConvert.SerializeObject(userData);jsonData = Encrypt(jsonData);File.WriteAllText(Application.dataPath + "/file.txt",jsonData);// ...}// 修改:存数据的时候进行第二次亦或(复原数据)public static UserData LoadUserData(string userName){// ...if (File.Exists(userName)){string jsonData = File.ReadAllText(userName);jsonData = Decrypt(jsonData);UserData userData = JsonConvert.DeserializeObject<UserData>(jsonData);return userData;// ...}return null;// ...}private void Update(){if (Input.GetKeyDown(KeyCode.Space)){UserData userData = new UserData();userData.id = 9878754;SaveUserData(userData);}if (Input.GetKeyDown(KeyCode.S)){LoadUserData(Application.dataPath + "/file.txt");}}
}