首页 > 其他分享 >【Unity数据持久化】PlayerPrefs的 存、读、删

【Unity数据持久化】PlayerPrefs的 存、读、删

时间:2022-09-07 16:37:08浏览次数:71  
标签:存储 持久 string myName Unity PlayerPrefs using 数据

1.PlayerPrefs是什么

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

PlayerPrefs的数据存储 类似于键值对存储,一个键对应一个值
提供了三种可存储类型:int、float、string
键:string类型
值:int float string 对应三种API

PlayerPrefs的局限性是 它只能存储3种数据类型
如果想要存储别的数据类型,只能降低精度,或者提高精度来进行存储

优点:
简单、快捷、易懂

缺点:
1.重复工作量繁多,自定义数据类都需要自己去实现存储读取的功能,而且代码的相似度极高
2.数据容易被修改,只要找到文件位置,就可以轻易地进行修改

主要用处:
单独使用它的原生功能 非常适合存储一些对安全性要求不高的简单数据
但是也不能小看它,对它进行简单的封装,也可以让它变得方便又安全

2.存储相关

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson1_PlayerPrefs : MonoBehaviour
{
    private void OnGUI()
    {
        //1.存int型
        PlayerPrefs.SetInt("myAge", 18);
        //2.存float型
        PlayerPrefs.SetFloat("myHeight", 181.5f);
        //3.存string型
        PlayerPrefs.SetString("myName", "假面骑士");

        //注意:直接调用Set方法,只是把数据存到了内存中
        //      当游戏结束时,Unity会自动把数据存到硬盘中
        //      如果游戏没有正常结束(报错或崩溃),那么数据将会丢失
        //解决这一问题的办法,调用.Save()方法,只要一调用,就会马上把数据存到硬盘中
        PlayerPrefs.Save();

        //补充:如果不同类型用同一个键进行存储,会把上一个数据覆盖掉
        PlayerPrefs.SetInt("myHeight", 181);
    }
}

3.读取相关

注意:游戏运行时,只要Set了对应键值对,就算没有马上.Save到硬盘,也能读取出信息

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson1_PlayerPrefs : MonoBehaviour
{
    private void OnGUI()
    {
        PlayerPrefs.SetInt("myAge", 18);
        PlayerPrefs.SetFloat("myHeight", 181.5f);
        PlayerPrefs.SetString("myName", "假面骑士");
        PlayerPrefs.Save();

        //1.读int型
        int age = PlayerPrefs.GetInt("myAge");
        //还有个重载
        //参数2 如果找不到键为myAge的值,就返回默认值100
        //参数2的作用:在得到不存在的数据时,就可以利用参数2来进行基础数据的初始化
        age = PlayerPrefs.GetInt("myAge", 23);

        //2.读float型
        float height = PlayerPrefs.GetFloat("myHeight");

        //3.读string型
        string name = PlayerPrefs.GetString("myName");

        //补充:判断数据是否存在
        if (PlayerPrefs.HasKey("myName"))
        {
            print("存在键为myName的数据");
        }
    }
}

4.删除数据

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

标签:存储,持久,string,myName,Unity,PlayerPrefs,using,数据
From: https://www.cnblogs.com/ElecSheep/p/16666120.html

相关文章

  • 【Unity学习笔记】Transform—父子关系
    1.获取和设置父对象子对象在世界坐标系下的位置是加法运算:子对象在世界坐标系下的位置=子对象的位置+父对象的位置子对象在世界坐标系下的缩放是乘法运算:子对象在世......
  • 可持久化线段树
    现想现写的,没有借鉴别人的任何东西。可持久化线段树1考虑不会变得太多,每次该值操作只会改变一个位置的值,其它位置是可以继承的。如果用数组,那就是下标继承。如果把数组分......
  • Unity2d SunnyLand (一) 开发环境 + Tilemap
    一、开发环境.net6.0+.netframework4.7.1dev +vscode +unity2022.1.15将vscode设置为默认脚本编辑器  二、Tilemap1.导入资源  2.设置属性 ......
  • Unity学习资源(超全)
     官方资料UnityUserManual手册Unity-ScriptingAPI(API详解)Unity-Learn-Modules(官方视频教程,适合英语好的同学) 下面是收集的一些不错的视频教程,对......
  • unity 人物行走
    1、双击player,打开AnimatorController 增加变量,使变量与状态转换关联起来。 创建混合树。建两个,运动中和静止时的混合树,并为这两个混合树之间添加状态转换。......
  • unity新建项目与物体的创建
    新建项目1.新建项目项目:每一个游戏都是一个独立的项目。1.打开Unity,在Projects面板上输入“Projectname”(项目名称);2.然后在“Location”中选择本地存储位置;3.选......
  • 读UnityShader入门精要第六章-Unity中的基础光照
    1.我们如何看到这个世界1.1 光源光是由光源发出的,在实时渲染中,光源被当成一个没有体积的点.在光学中,使用辐照度(irradiance)来量化光.当光打在一个平面上......
  • 第 20 天:在 Unity 中为 Sprite 设置动画
    第20天:在Unity中为Sprite设置动画客观的:我们如何在我们的统一项目中为我们的精灵提供动画?在我的GalaxyShooter项目中,拥有sprite非常棒,并且都提供了真实的......
  • unityshader_01
    第一章渲染流水线1.1渲染流水线1.1.1现实中流水线在工业上,流水线被广泛应用在装配线上。假设,老王有一个生产洋娃娃的工厂,一个洋娃娃的生产流程可以分为4个步骤:在流水线......
  • redis持久化部署
    redis持久化部署Redis简介软件说明Redis是一款开源的,ANSIC语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品。Redis采用内存(In-Memory)数据集(DataS......