Unity3D学习之数据持久化——PlayerPrefs

文章目录

  • 1. 概念
  • 2. 存储
    • 2.1 存到内存当中
    • 2.2 存到硬盘当中
    • 2.3 局限性
    • 2.4 相同键会覆盖
  • 3.读取
    • 3.1 int型
    • 3.2 float型
    • 3.3 string型
    • 3.4 判断数据是否存在
  • 4. 删除数据
  • 5. 存储位置
  • 6. 反射
    • 6.1 判断一个类型的对象是否可以让另一个类型为自己分配空间
    • 6.2 通过反射获得泛型类型
  • 7 数据管理类
    • 7.1 存储
      • 7.1.1 获取传入数据的所有字段
      • 7.1.2 定义一个key的规则
      • 7.1.3 遍历字段获得key
      • 7.1.4 声明私有方法进行存储
    • 7.2 读取
  • 8 List数据类型存储
  • 9 Doctionary数据类型
  • 10 自定义类成员
  • 11 读取常用数据类型
    • 11.1 获得一个数据
    • 11.2 SaveData函数
    • 12 读取List数据类型
    • 13 读取Dictionary数据类型
  • 14.读取自定义类型
  • 15. 数据存储的位置
  • 16.数据加密思路
    • 16.1 找不到
    • 16.2 看不懂
    • 16.3 解不出
    • 16.4 PlayerPrefs尝试加密


1. 概念

Unity3D学习之数据持久化——PlayerPrefs_第1张图片

就是保存存档和读取存档。
Unity3D学习之数据持久化——PlayerPrefs_第2张图片

分为两部分,存储和读取,先看存储在看读取

2. 存储

PlayerPrefs 是unity提供可以存储和读取玩家数据的公共类

Unity3D学习之数据持久化——PlayerPrefs_第3张图片

2.1 存到内存当中

在这里插入图片描述

2.2 存到硬盘当中

Unity3D学习之数据持久化——PlayerPrefs_第4张图片

2.3 局限性

在这里插入图片描述

2.4 相同键会覆盖

在这里插入图片描述
上面定义过 PlayerPrefs.SetInt(“myAge”,18)
后面再定义PlayerPrefs.SetFloat(“myAge”,20.2f)
后面进行读取int型 myAge时,会变成默认值0

3.读取

在这里插入图片描述

3.1 int型

Unity3D学习之数据持久化——PlayerPrefs_第5张图片
打印结果 0 和 100

3.2 float型

在这里插入图片描述

3.3 string型

在这里插入图片描述

3.4 判断数据是否存在

Unity3D学习之数据持久化——PlayerPrefs_第6张图片

4. 删除数据

Unity3D学习之数据持久化——PlayerPrefs_第7张图片

5. 存储位置

Unity3D学习之数据持久化——PlayerPrefs_第8张图片

在这里插入图片描述
在这里插入图片描述

Unity3D学习之数据持久化——PlayerPrefs_第9张图片

6. 反射

Unity3D学习之数据持久化——PlayerPrefs_第10张图片

6.1 判断一个类型的对象是否可以让另一个类型为自己分配空间

1)父类装子类
2)是否可以从一个类型的对象为自己分配空间

创建两个有继承关系的类

Unity3D学习之数据持久化——PlayerPrefs_第11张图片

Unity3D学习之数据持久化——PlayerPrefs_第12张图片

Unity3D学习之数据持久化——PlayerPrefs_第13张图片

6.2 通过反射获得泛型类型

Unity3D学习之数据持久化——PlayerPrefs_第14张图片Unity3D学习之数据持久化——PlayerPrefs_第15张图片

7 数据管理类

Unity3D学习之数据持久化——PlayerPrefs_第16张图片

单例模式适合管理类
创建管理类
Unity3D学习之数据持久化——PlayerPrefs_第17张图片
测试类
Unity3D学习之数据持久化——PlayerPrefs_第18张图片

7.1 存储

Unity3D学习之数据持久化——PlayerPrefs_第19张图片

7.1.1 获取传入数据的所有字段

Unity3D学习之数据持久化——PlayerPrefs_第20张图片
Unity3D学习之数据持久化——PlayerPrefs_第21张图片
Unity3D学习之数据持久化——PlayerPrefs_第22张图片

7.1.2 定义一个key的规则

在这里插入图片描述

7.1.3 遍历字段获得key

Unity3D学习之数据持久化——PlayerPrefs_第23张图片

获得了对应的keyUnity3D学习之数据持久化——PlayerPrefs_第24张图片

7.1.4 声明私有方法进行存储

Unity3D学习之数据持久化——PlayerPrefs_第25张图片
Unity3D学习之数据持久化——PlayerPrefs_第26张图片
Unity3D学习之数据持久化——PlayerPrefs_第27张图片

7.2 读取

Unity3D学习之数据持久化——PlayerPrefs_第28张图片
不需要在外部创建对象,然后传入函数
由函数直接返回对象,让外部少写一行代码

8 List数据类型存储

在这里插入图片描述

通过IList 父类进行类型判断,因为List需要泛型定义,不确定
Unity3D学习之数据持久化——PlayerPrefs_第29张图片
Unity3D学习之数据持久化——PlayerPrefs_第30张图片Unity3D学习之数据持久化——PlayerPrefs_第31张图片

9 Doctionary数据类型

Unity3D学习之数据持久化——PlayerPrefs_第32张图片

和List一样,因为Dictionary的泛型不清楚,通过获得其父类获得object

Unity3D学习之数据持久化——PlayerPrefs_第33张图片
通过增加"key" 和 "value"来分别存储一对键值对

10 自定义类成员

Unity3D学习之数据持久化——PlayerPrefs_第34张图片
Unity3D学习之数据持久化——PlayerPrefs_第35张图片

在这里插入图片描述
Unity3D学习之数据持久化——PlayerPrefs_第36张图片

11 读取常用数据类型

Unity3D学习之数据持久化——PlayerPrefs_第37张图片

11.1 获得一个数据

Unity3D学习之数据持久化——PlayerPrefs_第38张图片
根据字段类型 来判断 根据哪个API判断

11.2 SaveData函数

函数说明在 7.2
Unity3D学习之数据持久化——PlayerPrefs_第39张图片

12 读取List数据类型

Unity3D学习之数据持久化——PlayerPrefs_第40张图片

13 读取Dictionary数据类型

Unity3D学习之数据持久化——PlayerPrefs_第41张图片

14.读取自定义类型

Unity3D学习之数据持久化——PlayerPrefs_第42张图片

修改游戏逻辑读取存档

Unity3D学习之数据持久化——PlayerPrefs_第43张图片执行
在执行save方法的时候,进行存盘
在这里插入图片描述

15. 数据存储的位置

Unity3D学习之数据持久化——PlayerPrefs_第44张图片

16.数据加密思路

Unity3D学习之数据持久化——PlayerPrefs_第45张图片

16.1 找不到

Unity3D学习之数据持久化——PlayerPrefs_第46张图片

16.2 看不懂

Unity3D学习之数据持久化——PlayerPrefs_第47张图片

16.3 解不出

Unity3D学习之数据持久化——PlayerPrefs_第48张图片

16.4 PlayerPrefs尝试加密

在这里插入图片描述

你可能感兴趣的:(学习,笔记,unity)