首页 > 其他分享 >【Unity】数据持久化PlayerPrefs

【Unity】数据持久化PlayerPrefs

时间:2024-10-10 09:04:47浏览次数:7  
标签:持久 string int value Unity key PlayerPrefs 数据

PlayerPrefs存储数据,数据为[key-value]形式

可以用保存用户的设置、偏好;历史得分数据等;

保存的数据位置

不同的系统数据将被保存在不同的位置。

Windows系统保存的数据将会被存储在系统注册表中,位置如下:

(编辑器运行模式)\HKEY_CURRENT_USER\SOFTWARE\Unity\UnityEditor\DefaultCompany\[公司名]

(包模式)\HKEY_CURRENT_USER\SOFTWARE\[公司名]

公司名在unity编辑器中的playerSetting中查看和设置

保存数据

PlayerPrefs保存的数据约束:

只能保存3种数据类型

key为string

value为int float string

PlayerPrefs.SetString("[key]", "[value]");
PlayerPrefs.Save();

//其他
//int型
PlayerPrefs.SetInt("[key]", 18);
//float型
PlayerPrefs.SetFloat("[key]", 181.5f);

获取数据

string jsonString = PlayerPrefs.GetString("[key]");
//JsonUtility.FromJson<>只能转换简单数据结构。
//如果需要解构复杂数据结构,可以使用 Newtonsoft.json 插件
T obj = JsonUtility.FromJson<T>(jsonString);

//判断某key是否存在
PlayerPrefs.HasKey("[key]");//返回bool

//其他
//int型
int value = PlayerPrefs.GetInt("[key]");
//key不存在时,第二个参数放默认值
age = PlayerPrefs.GetInt("[key]", 23);

//float型
float value = PlayerPrefs.GetFloat("[key]");

复杂数据结构与Json的相互转化

删除数据

//删除指定键值对
PlayerPrefs.DeleteKey("[key]");
//删除所有数据
PlayerPrefs.DeleteAll();

应用:排行榜数据持久化

[System.Serializable]
private class HighscoreEntry
{
    public int score;
    public string name;
}

private class Highscores
{
    public List<HighscoreEntry> highscoreEntryList;
}

private void AddHighscoreEntry(int score, string name)
{
    HighscoreEntry highscoreEntry = new HighscoreEntry { score = score, name = name };

    //获取排行榜,并将新的数据存入排行榜列表
    string jsonString = PlayerPrefs.GetString("highscoreEntryList");
    Highscores highscores = JsonUtility.FromJson<Highscores>(jsonString);
    highscores.highscoreEntryList.Add(highscoreEntry);

    //重新保存排行榜列表
    string json = JsonUtility.ToJson(highscores);
    PlayerPrefs.SetString("highscoreEntryList", json);
    PlayerPrefs.Save();
}

标签:持久,string,int,value,Unity,key,PlayerPrefs,数据
From: https://www.cnblogs.com/sitarblogs/p/18455574

相关文章

  • unity简单内存池案例
    unity简单内存池案例组件准备代码部分 1.组件准备在unity中创建一个空白物体命名为cubepawner,并拖到主摄像机之前 然后再创建cubepawner和cubePool脚本挂载到该物体上  再创建一个正方体,同时再创建一个空脚本,命名为cube挂上去,并将该正方体拖入下方文件浏览器中......
  • Unity使用DOTween实现金币飞入效果
    1publicGameObjectshowRewardPanel;2publicTextSetCoinText;3publicTextSetLevelText;//经验exp4privateintgetCoin;5privateintgetExp;6publicImagecoinImage;7publicImagetargetImage;8publicCameramainCamera;9publicTextMeshco......
  • Unity ML-Agents: 革新游戏AI开发的开源工具包
    ml-agentsUnityML-Agents:革新游戏AI开发的开源工具包UnityML-Agents(MachineLearningAgents)是UnityTechnologies推出的一个开源项目,旨在将游戏和模拟环境转变为训练智能代理的平台。这个工具包为游戏开发者和AI研究人员提供了一个强大而灵活的框架,使他们能够轻松地在Un......
  • unity 摇杆
    /***********************************************EasyTouchControlsCopyright©2016TheHedgehogTeamhttp://www.thehedgehogteam.com/Forum/[email protected]************************************......
  • Unity 从零开始的框架搭建1-1 unity中对象调用的三种方式的优缺点分析【干货】
    该文章专栏是向QFrameWork作者凉鞋老师学习总结得来,吃水不忘打井人,不胜感激Unity框架搭建学习笔记1-1,前一个1代表凉鞋的第一季教程,后一个1代表该季第一篇我的文章 unity中对象调用的三种方式方法调用,例如:A调用B的SayHello方法委托或者回调,例如:界面监听子按钮的点击......
  • Unity移动旋转缩放
    //【移动】//一、修改Position//Translate//每帧移动一定距离,乘以deltaTime后变成每秒移动一定距离,默认是局部坐标会受自身旋转影响//transform.Translate(Vector3.up*Time.deltaTime);//transform.Translate(Vector3......
  • 【Redis】持久化(下)-- AOF
    文章目录AOF概念如何使用AOFAOF工作流程命令写入演示文件同步策略`AOF`的重写机制概念触发重写机制`AOF`重写流程启动时数据恢复混合持久化总结AOF概念AOF持久化:以独立日志的方式记录每次的写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的.AOF的主要......
  • 【Unity】绘制表格:排行榜
    绘制一款表格,表格特征为头行颜色不同、间隔行不同背景色、滚动视图;表格内容是分数排行榜,前三名有奖牌图标前缀。成果展示Scene部分标题和背景滚动视图:表头、表格行模板效果图脚本部分脚本绑定在滚动组件的Viewport物体上。publicclassHighscoreTable:MonoBehaviour......
  • Unity 二维数组序列化
    unity中,二维以上的数量是不支持序列化的,如:usingSystem.Collections.Generic;usingUnityEngine;publicclassTestArray:MonoBehaviour{//不支持序列化(在Inspector面板无法显示)publicRect[][]rect2Ds;//不支持序列化(在Inspector面板无法显示)//pub......
  • 【主机持久化】概述
    简单来说持久化就是开后门,目标机器重启或者漏洞修补后仍可以继续控制,比如通过钓鱼获得初始权限后,如果没做持久化Beacon丢失可能就很难再次获得,安装持久化通常需要进行一些配置更改或将后门写入磁盘,一方面持久化具有很高的检测风险,另一方面在长期渗透中非常有用(实际上是必不可少的......