unity 中的存储

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,数据自动加密。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值