PlayerPrefs类进行扩展加密存储整理

PlayerPrefs类原生不支持加密,为防止数据被篡改,本文介绍了一种集成和扩展PlayerPrefs的方法,实现加密存储,并提供实例对象的存取操作。参考了多位专家的博客,整理出方便使用的解决方案。同时,列出了不同平台下PlayerPrefs的本地存储路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先感谢三位大神的博客 :
http://blog.youkuaiyun.com/u013895270/article/details/45579033 http://www.cnblogs.com/sunxuchu/p/5484018.html http://www.cnblogs.com/plateFace/p/5170544.html

PlayerPrefs类本身不进行加密 ,保持数据的时候容易被修改破解。使用多少key值存储太过麻烦,通过集成类可以存储实例对象。在大神的基础上稍微修改一下集合而成,方便使用。

一,测试代码如下

public class User {

    public string  Name ;
    public int Age;
    public string Describe ;
    public string dse ;
    public string text ;
}

PlayerPrefs.DeleteAll();

        User user = new User();
        user.Name = "哈哈哈";
        user.Age = 122;
        user.Describe = "test ";
        user.dse = "text";
        user.text = "text";
        PlayerPrefsExtend.Save("user", user);

        user = null;

        user = PlayerPrefsExtend.GetValue<User>("user");

        Debug.Log("user name: " + user.Name);
        Debug.Log("user Age: " + user.Age);
        Debug.Log("user Describe: " + user.Describe);

二,存储读取实例对象

using UnityEngine;
using System.Collections;
using System;
using System.Reflection;
public static class PlayerPrefsExtend
{
    public static void Save(string name, object o)
    {
        Type t = o.GetType();
        FieldInfo[] fiedls = t.GetFields();
        for (int i = 0; i < fiedls.Length; i++)
        {
            string saveName = name + "." + fiedls[i].Name;
            switch (fiedls[i].FieldType.Name)
            {
            case "String":
                CryptoPrefs.SetString(saveName, fiedls[i].GetValue(o).ToString());
                break;
            case "Int32":
            case "Int64":
            case "Int":
            case "uInt":
                CryptoPrefs.SetInt(saveName, (int)fiedls[i].GetValue(o));
                break;
            case "Float":
                CryptoPrefs.SetFloat(saveName, (float)fiedls[i].GetValue(o));
                break<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值