当前位置: 首页 > news >正文

织梦cms 网站计数链接交换平台

织梦cms 网站计数,链接交换平台,武汉软件开发公司,专门做代理的网站PlayerPrefs是Unity游戏引擎中的一个类,用于在游戏中存储和访问玩家的偏好设置和数据。它可以用来保存玩家的游戏进度、设置选项、最高分数等信息。PlayerPrefs将数据存储在本地文件中,因此可以在游戏重新启动时保持数据的持久性。 //PlayerPrefs的数据…

PlayerPrefs是Unity游戏引擎中的一个类,用于在游戏中存储和访问玩家的偏好设置和数据。它可以用来保存玩家的游戏进度、设置选项、最高分数等信息。PlayerPrefs将数据存储在本地文件中,因此可以在游戏重新启动时保持数据的持久性。

//PlayerPrefs的数据存储 类似于键值对存储 一个键对应一个值
//提供了存储3种数据的方法 int float string
//键: string类型 
//值:int float string 对应3种APIPlayerPrefs.SetInt("myAge", 18);
PlayerPrefs.SetFloat("myHeight", 177.5f);
PlayerPrefs.SetString("myName", "TonyChang");//直接调用Set相关方法 只会把数据存到内存里
//当游戏结束时 Unity会自动把数据存到硬盘中
//如果游戏不是正常结束的 而是崩溃 数据是不会存到硬盘中的
//只要调用该方法 就会马上存储到硬盘中
PlayerPrefs.Save();//PlayerPrefs是有局限性的 它只能存3种类型的数据
//如果你想要存储别的类型的数据 只能降低精度 或者上升精度来进行存储
bool sex = true;
PlayerPrefs.SetInt("sex", sex ? 1 : 0);//如果不同类型用同一键名进行存储 会进行覆盖
PlayerPrefs.SetFloat("myAge", 20.2f);//注意 运行时 只要你Set了对应键值对
//即使你没有马上存储Save在本地
//也能够读取出信息//int
int age = PlayerPrefs.GetInt("myAge");
print(age);
//前提是 如果找不到myAge对应的值 就会返回函数的第二个参数 默认值
age = PlayerPrefs.GetInt("myAge", 100);
print(age);//float
float height = PlayerPrefs.GetFloat("myHeight", 1000f);
print(height);//string
string name = PlayerPrefs.GetString("myName");
print(name);//第二个参数 默认值 对于我们的作用
//就是 在得到没有的数据的时候 就可以用它来进行基础数据的初始化//判断数据是否存在
if( PlayerPrefs.HasKey("myName") )
{print("存在myName对应的键值对数据");
}//删除指定键值对
PlayerPrefs.DeleteKey("myAge");
//删除所有存储的信息
PlayerPrefs.DeleteAll();
PlayerPrefs存储工具类:

为了方便进行数据的存储,使用PlayerPrefs中进行存储方法的设置的存取!

主要实现功能是数据的读和数据的取~ 通过反射进行数据类型的获取,利用PlayerPrefs进行数据存储。

using System;
using System.Collections;
using System.Reflection;
using UnityEngine;namespace Framwork
{/// <summary>/// Playerprefs 存储类/// </summary>public class PlayerPrefsManager{private static PlayerPrefsManager instance=new PlayerPrefsManager();public static PlayerPrefsManager Instance => instance;private PlayerPrefsManager(){}/// <summary>/// 存取数据的方法/// </summary>/// <param name="obj">数据实体</param>/// <param name="name">数据名称</param>public void SaveData(object data, string keyName){Type type = data.GetType();FieldInfo[] infos = type.GetFields();string tempKey="null";FieldInfo tempInfo = null;for (int i = 0; i < infos.Length; i++){//获取数据数据类型tempInfo = infos[i];Debug.Log("Types==="+tempInfo);//类的名字+类的类型 + 数据内容名字+数据类型//作为存储的keyName键tempKey = keyName + "_" + type.Name + "_" + tempInfo.Name+ "_" + tempInfo.FieldType.Name;SaveValue(tempInfo.GetValue(data),tempKey);}//进行值的获取//tempInfo.GetValue(data);PlayerPrefs.Save();}/// <summary>/// 读取数据的类型/// </summary>/// <param name="type">要读取的数据类型</param>/// <param name="name">要读取的数据名称</param>/// <returns>返回数据实体</returns>public object LoadData(Type type, string name){//获取数据中的类型FieldInfo[] infos = type.GetFields();//创建存储数据信息的实体object data = Activator.CreateInstance(type);string tempName = null;FieldInfo tempInfo = null;for (int i = 0; i < infos.Length; i++){tempInfo = infos[i];//数据结构中的数据名称tempName = name + "_" + type.Name + "_" +tempInfo.Name+"_"+tempInfo.FieldType.Name;//数据结构中的数据名称类型//装载的容器  容器中的数据 //进行数据装载tempInfo.SetValue(data,LoadValue(tempInfo.FieldType,tempName));}return data;}/// <summary>/// 进行具体的类型数据的存储/// </summary>/// <param name="data"></param>/// <param name="keyName"></param>private void SaveValue(object value, string keyName){Type fieldType = value.GetType();if (fieldType == typeof(int)){Debug.Log("存储int"+value);PlayerPrefs.SetInt(keyName,(int)value);}else if (fieldType == typeof(float)){Debug.Log("存储float"+value);PlayerPrefs.SetFloat(keyName,(float)value);}else if (fieldType == typeof(string)){Debug.Log("存储string"+value);PlayerPrefs.SetString(keyName,value.ToString());}//对于List存储的设置//根据存储的字段类型和IList是否是父子关系else if(typeof(IList).IsAssignableFrom(fieldType)){//父类装子类IList list=value as IList;//存储元素数量PlayerPrefs.SetInt(keyName,list.Count);Debug.Log("存储List长度为"+list.Count);int index = 0;foreach (var obj in list){//存储list列表中元素内容//命名形式是 list名字+索引编号//递归调用存储SaveValue(obj,keyName+index);index++;}}else if (typeof(IDictionary).IsAssignableFrom(fieldType)){IDictionary dictionary = value as IDictionary;//存储数据个数PlayerPrefs.SetInt(keyName,dictionary.Count);Debug.Log("存储Dic长度为"+dictionary.Count);int index = 0;foreach (var key in dictionary.Keys){//存储键SaveValue(key,keyName+"_key_"+index);//存储值 SaveValue(dictionary[key],keyName+"_value_"+index);index++;}}//自定义数据类型的存储 进行解析else {SaveData(value,keyName);}}private object LoadValue(Type type, string name){if (type == typeof(int)){return PlayerPrefs.GetInt(name,0);}else if (type == typeof(float)){return PlayerPrefs.GetFloat(name,0.0f);}else if (type == typeof(string)){return PlayerPrefs.GetString(name,"");}else if (typeof(IList).IsAssignableFrom(type)){//读取列表int count = PlayerPrefs.GetInt(name);IList tempList=Activator.CreateInstance(type) as IList;for (int i = 0; i < count; i++){//获取List中存储元素的类型 type.GetGenericArguments()[0]tempList.Add(LoadValue(type.GetGenericArguments()[0],name+i));}return tempList;}else if (typeof(IDictionary).IsAssignableFrom(type)){//进行对字典的读取int count = PlayerPrefs.GetInt(name);IDictionary tempDictionary=Activator.CreateInstance(type) as IDictionary;for (int i = 0; i < count; i++){tempDictionary.Add(LoadValue(type.GetGenericArguments()[0], name + "_key_" + i),LoadValue(type.GetGenericArguments()[1], name + "_value_" + i));}return tempDictionary;}else{//读取自定义类成员的设置return LoadData(type, name);}}}
}

http://www.fp688.cn/news/154455.html

相关文章:

  • 内力网站建设站长工具综合查询2020
  • 网站二维码悬浮图片百度搜索
  • 美国十大购物网站优化关键词步骤
  • 企业如何免费做网站今日早间新闻
  • 客户端下载网站关键词seo优化公司
  • 网站开发视频是存储的公司网站建设需要注意什么
  • 淘宝客推广网站怎么做百度快照投诉中心
  • 阿拉丁建站系统排名优化价格
  • 自动跳转手机网站赣州网站建设公司
  • 企业网站的优势百度推广渠道户
  • 建一个网站首先要怎么做如何在网上推广自己
  • 小程序商店怎么接入视频号嘉峪关seo
  • 平台类网站营销方案百度认证官网
  • 网站建设外包排名爱站网关键词密度
  • 门户网站有哪些推广分类seo报价单
  • 最新首码项目网长沙网站seo优化
  • 河南网站推广优化seo关键词排名优化评价
  • 宣城市住房城乡建设委员会网站5118大数据平台官网
  • 中央两学一做专题网站公司做网站怎么做
  • 海南网站优化免费推广公司的网站
  • wordpress a 锚点seo与网络推广的区别和联系
  • 做全屏轮播的网站有哪些常用的关键词挖掘工具
  • 哪个网站可以做围棋作业网站平台都有哪些
  • 简洁网站设计成功品牌策划案例
  • 手机网站建设万网系统优化大师
  • 网站建设的公司哪家是上市公司百度搜索推广采取
  • 手机网站设计论文百度新闻发布
  • 东莞网站开发推荐搜索引擎优化的流程是什么
  • 如何自学做网站百度问答
  • 擦彩网站开发青岛百度推广seo价格