目录
PlayerPrefs
另外,如果键名相同,会被覆盖
如果这个键不存在,它会返回一个该类型的默认值,我们也可以指定这个默认值
也可以用来判断是否重名
存储位置
练习题
然后再写添加方法
直接用一样的参数,省去了手动创建再添加的过程。
先存储排行榜列表的长度,然后遍历所有信息体,遵循键不同的原则依次存储每个信息类里的数据(尾缀加i是为了让每个键名都不同。如果有多个排行榜,也要遵循这一原则)
读取则先读取长度,方便之后的遍历。因为我们之后创建排行榜是先load再save,所以先初始化列表。根据之前的键名读取值,将这个信息体创建出来加入列表。
反射知识
一个列表有list和<>中的类型,有时会需要获取泛型类型。
这个方法返回数组的原因
PlayerPrefs实践小项目
想办法建立一个通用的数据管理类,可以在外部直接调用它的方法。
存储
装载泛型
我直接去判断typeof(list)是不允许的,必须用list<具体类型>才能判断,所以想别的办法
如果申明list又要判断类型,所以直接声明Ilist。然后依次存储Ilist中的值,判断部分可以使用递归。
存储字典
原理也差不多
不过,确保判断用的父类只有该子类一个继承。至少99%是字典
用foreach得到里面所有的键,再利用dic[key]得到所有的值,都存储一遍
存储自定义类:
附件1.saveValue方法:
读取
读取常用类型
此处参数应为loadKeyName,不是传进来的keyname
这个键明和存储时要一样,不然会读错
读取列表
利用之前补充的知识得到每个数据的类型,添加进列表,然后返回该读取好的列表
LoadValue方法如上。 此外,键名加i也是与存储时的键名匹配,当时是index
读取字典
字典需要键和值,所以add的时候也是一起读取键和值。
如果发现传进来的这个变量,它是一个自定义类,那么就让这个类也执行一次遍历读取。