1. PlayerPrefs
适用场景: 轻量级数据,如设置项、登录状态、简单配置
// 保存
PlayerPrefs.SetString("Username", "张三");
PlayerPrefs.SetString("Password", "encrypted_password"); // 注意:密码需要加密!
PlayerPrefs.Save();
// 读取
string username = PlayerPrefs.GetString("Username", "");
string password = PlayerPrefs.GetString("Password", "");
特点: 简单易用,数据明文存储,不适合存储敏感信息(如密码原文)
2. PlayerPrefs + 加密(推荐)
对密码进行 Base64 或 AES 加密后再存储
using System.Text;
using System.Security.Cryptography;
// 加密
public string Encrypt(string plainText)
{
byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
return Convert.ToBase64String(plainBytes); // 简单加密,可改用 AES 更安全
}
// 解密
public string Decrypt(string encryptedText)
{
byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
return Encoding.UTF8.GetString(encryptedBytes);
}
3. JSON 文件存储
适用场景: 结构化数据、需要离线存储
using System.IO;
using UnityEngine;
// 数据类
[System.Serializable]
public class UserData
{
public string username;
public string token;
public long loginTime;
}
// 保存到文件
public void SaveUserData(UserData data)
{
string path = Path.Combine(Application.persistentDataPath, "userdata.json");
string json = JsonUtility.ToJson(data);
File.WriteAllText(path, json);
}
// 读取
public UserData LoadUserData()
{
string path = Path.Combine(Application.persistentDataPath, "userdata.json");
if (File.Exists(path))
{
string json = File.ReadAllText(path);
return JsonUtility.FromJson<UserData>(json);
}
return null;
}
4. SQLite(数据库)
适用场景: 大量数据、关系型数据、离线缓存
需要导入 Mono.Data.Sqlite 或使用第三方插件如 SQLite4Unity3d。
5. Encrypted PlayerPrefs 插件
如 SecurePlayerPrefs 插件,可以直接替代 PlayerPrefs,数据自动加密。
3131

被折叠的 条评论
为什么被折叠?



