· 编辑器插件使用类:

1. SessionState

描述

SessionState 是一种键/值存储,旨在存储和检索应在重新加载程序集期间保留的 Editor 会话状态。
退出 Unity 时,系统将清除 SessionState 中存储的状态信息。用于存储应在使用 EditorPrefs 的 Unity Editor 会话中持久保留的状态信息。

静态函数

函数 说明
EraseBool 擦除键/值存储中的布尔值条目。
EraseFloat 擦除键/值存储中的浮点条目。
Eraselnt 擦除键/值存储中的整数条目。
EraselntArray 擦除键/值存储中的整数条目。
EraseString 擦除键/值存储中的字符串条目。
EraseVector3 擦除键/值存储中的 Vector 3 条目。
GetBool 检索布尔值。
GetFloat 检索浮点值。
Getlnt 检索整数值。
GetIntArray 检索整数数组。
GetString 检索字符串值。
GetVector3 检索 Vector3。
SetBool 存储布尔值。
SetFloat 存储浮点值
SetInt 存储整数值。
SetIntArray 存储整数数组。
SetString 存储字符串值。
SetVector3 存储Vector3。

官方地址:https://docs.unity3d.com/cn/2020.3/ScriptReference/SessionState.html

2. EditorPrefs

描述

存储和访问 Unity 编辑器偏好设置。
在 macOS 上,EditorPrefs 存储在 ~/Library/Preferences/com.unity3d.UnityEditor5.x.plist
在 Windows 上,EditorPrefs 存储在注册表中,在 HKCU\Software\Unity Technologies\UnityEditor 5.x 键之下。

静态函数

函数 说明
DeleteAll 从偏好中删除所有键和值。请谨慎使用。
DeleteKey 从偏好中删除key及其对应值。
GetBool 返回偏好设置文件中与key对应的值(如果存在)。
GetFloat 返回偏好设置文件中与key对应的浮点值(如果存在)。
Getlnt 返回偏好设置文件中与key对应的值(如果存在):
GetString 返回偏好设置文件中与key对应的值(如果存在)。
HasKey 如果偏好设置文件中存在/key/,则返回true.
SetBool 设置由key标识的偏好的值。
SetFloat 设置由key标识的偏好设置的浮点值。
SetInt 将由键标识的偏好设置的值设置为整数。
SetString 设置由key标识的偏好设置的值。请注意,EditorPrefs不支持null字符串,而是存储空字符串。

官方地址:https://docs.unity3d.com/cn/2020.3/ScriptReference/EditorPrefs.html

3. EditorUserSettings

描述

项目中可以共享数据的保存方法。在这里保存的数据都会被加密,很适合保存个人信息系或是密码之类的东西。
使用这个 API 保存的数据只会对自身的Project产生影响。
以 value 加密的形式,保存在项目内的文件中。
以 Unity2021 为例,数据保存在项目的 UserSettings 目录下的 EditorUserSettings.asset 。(txt格式)
旧版本存储在 Library的EditorUserSettings.asset 中。(二进制格式)

静态函数

函数 说明
SetConfigValue 为给定键标识的项设置单个字符串值。
GetConfigValue 返回 EditorUserSettings.asset 文件中与 key 对应的值(如果存在)。

· 游戏内部储存数据类

1. PlayerPrefs

描述

PlayerPrefs 是一个存储游戏会话之间玩家偏好的类。 它可以将字符串、浮点数和整数值存储到用户的平台注册表中。
Unity 根据应用程序运行的操作系统以不同方式存储 PlayerPrefs 数据。 本页给出的文件路径中,公司名称和产品名称是您在 Unity 的 Player Settings 中设置的名称。

独立设备上的储存位置

  1. macOS:PlayerPrefs 存储在 ~/Library/Preferences/com.ExampleCompanyName.ExampleProductName.plist 中。 Unity 对编辑器和独立设备上的项目使用相同的 .plist 文件。
  2. Windows:PlayerPrefs 存储在 HKCU\Software\公司名称\产品名称 键中。
  3. Linux:PlayerPrefs 存储在 ~/.config/unity3d/公司名称/产品名称 中。
  4. Windows 应用商店应用程序:PlayerPrefs 存储在 %userprofile%\AppData\Local\Packages\[产品包编号]\LocalState\playerprefs.dat 中。
  5. Windows Phone 8:Unity 将 PlayerPrefs 数据存储在应用程序的本地文件夹中。有关详细信息,请参阅 Directory.localFolder
  6. Android:PlayerPrefs 存储在 /data/data/pkg-name/shared_prefs/pkg-name.v2.playerprefs.xml 中。 Unity 将 PlayerPrefs 数据存储在设备上的 SharedPreferences 中。 C#、JavaScript、Android Java 和本机代码都可以访问 PlayerPrefs 数据。
  7. WebGL:Unity 使用浏览器的 IndexedDB API 存储 PlayerPrefs 数据。有关更多信息,请参阅 IndexedDB

编辑器内播放模式存储位置

  1. macOS:PlayerPrefs 存储在 /Library/Preferences/[bundle identifier].plist 中。
  2. Windows 上,PlayerPrefs 存储在 HKCU\Software\Unity\UnityEditor\ExampleCompanyName\ExampleProductName 键中。 Windows 10 使用应用程序的 PlayerPrefs 名称。 例如,Unity 添加一个 DeckBase 字符串并将其转换为 DeckBase_h3232628825。 应用程序忽略扩展名。

Unity 将 PlayerPrefs 存储在本地注册表中,没有加密。 不要使用 PlayerPrefs 数据来存储敏感数据。

静态函数

函数 说明
DeleteAll 从偏好中删除所有键和值。请谨慎使用。
DeleteKey 从 PlayerPrefs 中删除给定的键。 如果键不存在,DeleteKey 没有影响。
GetFloat 返回偏好设置文件中与 key 对应的值(如果存在)。
GetInt 返回偏好设置文件中与 key 对应的值(如果存在)。
GetString 返回偏好设置文件中与 key 对应的值(如果存在)。
HasKey 如果 PlayerPrefs 中存在给定键,则返回 true,否则返回 false。
Save 将所有修改的偏好写入磁盘。
SetFloat 为给定键标识的首选项设置单个浮点值。 您可以使用 PlayerPrefs.GetFloat 来检索此值。
SetInt 为给定键标识的首选项设置单个整数值。 您可以使用 PlayerPrefs.GetInt 来检索此值。
SetString 为给定键标识的首选项设置单个字符串值。 您可以使用 PlayerPrefs.GetString 来检索此值。

官方地址:https://docs.unity3d.com/cn/2020.1/ScriptReference/PlayerPrefs.html

2.BinaryFormatter 二进制序列化

假设有一个Player类

[System. Serializable]
public class Player
{public int health;public int  power;public Vector3 position;
}

由于BinaryFormatter序列化不支持Unity的Vector3类型,所以我们需要做一下包装。

public class PlayerData{public int level;public int health;public float[] position;public PlayerData(Player player){this.level = player.level;this.health = player.health;this.position = new float[3];this.position[0] = player.transform.position.x;this.position[1] = player.transform.position.y;this.position[2] = player.transform.position.z;}
}

我们对PlayerData进行保存和读取。读取出来的PlayerData可以赋给Player。

public static class SaveSystem{//保存数据public static void SavePlayer(Player player){BinaryFormatter formatter = new BinaryFormatter();string path = Application.persistentDataPath+"/player.fun";FileStream stream = new FileStream(path,FileMode.Create);PlayerData data = new PlayerData(player);formatter.Serialize(stream,data);stream.Close();}//读取数据public static PlayerData LoadPlayer(){string path = Application.persistentDataPath+"/player.fun";if(File.Exists(path)){BinaryFormatter formatter = new BinaryFormatter();FileStream stream = new FileStream(path,FileMode.Open);PlayerData data = formatter.Deserialize(stream) as PlayerData;stream.Close();return data;}else{Debug.LogError("找不到保存文件  "+path);return null;}}
}

3. 保存为json格式的文本文件

使用 Unity 自身API JsonUtility。
保存数据

 public static void SavePlayerJson(Player player){string path = Application.persistentDataPath+"/player.json";var content = JsonUtility.ToJson(player,true);File.WriteAllText(path,content);}

读取数据

 public static PlayerData LoadPlayerJson(){string path = Application.persistentDataPath+"/player.json";if(File.Exists(path)){var content = File.ReadAllText(path);var playerData = JsonUtility.FromJson<PlayerData>(content);return playerData;}else{Debug.LogError("找不到保存文件  "+path);return null;}}

4. XmlSerializer进行序列化

假如有类

public class Entity
{public Entity(){}public Entity(string c, string f){name = c;school = f;}public string name;public string school;
}

读取数据

List<Entity> entityList=null;
XmlSerializer xs = new XmlSerializer(typeof(List<Entity>));
using (StreamReader sr = new StreamReader(configPath))
{entityList = xs.Deserialize(sr) as List<Entity>;
}

保存数据

List<Entity> entityList=null;
XmlSerializer xs = new XmlSerializer(typeof(List<Entity>));
using (StreamWriter sw = File.CreateText(configPath))
{xs.Serialize(sw, entityList);
}

对应的xml文件为:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfEntity xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Entity><Name>Alice</Name><School>SJTU</School></Entity><Entity><Name>Cici</Name><School>CSU</School></Entity><Entity><Name>Zero</Name><School>HIT</School></Entity>
</ArrayOfEntity>

5.TextAsset(普通文本读取)

TextAsset text=(TextAsset)Resources.Load("unity3d");
Debug.Log(text.text);

在Project窗口的根目录创建Resources文件夹,然后把名字为unity3d.txt的文件夹的文件放在Resources文件夹下就可以读取到。

暂时学到的就这几种,后面有新的再添加

Unity用于储存数据的几种方式相关推荐

  1. 在.NET Core 中收集数据的几种方式

    APM是一种应用性能监控工具,可以帮助理解系统行为, 用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题, 通过汇聚业务系统各处理环节的实时数据,分析业务系统各事务处理的交易路径和处理 ...

  2. Android数据存储几种方式用法总结

    Android数据存储几种方式用法总结 1.概述 Android提供了5种方式来让用户保存持久化应用程序数据.根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存 ...

  3. python读取图像数据流_浅谈TensorFlow中读取图像数据的三种方式

    本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和TFRecorder读取方式.并且还补充了功能相近的tf函数. 1.处理单张图片 我们训练完模型之后,常常要用图片 ...

  4. form表单、控制器中接收表单提交数据的4种方式

    Form表单 这篇文章主要讲的是form表单的提交 之前我们接触过的form表单元素是在Bootstrap框架里面,这次也将用到Bootstrap框架去布局(见图表1)通过Bootstrap框架布局呈 ...

  5. 【Matlab系列】MATLAB中显示输出数据的四种方式

    DATE: 2019-11-13 1.参考 MATLAB 显示输出数据的三种方式 Matlab之print,fprint,fscanf,disp函数 2.改变数据格式 当数据重复再命令行窗口时,整数以 ...

  6. C#读取Excel数据的几种方式(包含大量数据读取)

    C#读取Excel数据的几种方式(包含大量数据读取) C#读取Excel数据的几种方式(包含大量数据读取) OleDB方式 COM组件的方式 NPOI方式读取(此处未测试,参考其他博文) 常用的Exc ...

  7. mysql数据库删除数据的三种方式:

    mysql数据库删除数据的三种方式: delete from table where 直接删除表中的某一行数据,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作.所以delete相 ...

  8. discard connection丢失数据_python kafka 生产者发送数据的三种方式

    python kafka 生产者发送数据的三种方式 发送方式 同步发送 发送数据耗时最长 有发送数据的状态,不会丢失数据,数据可靠性高 以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断 ...

  9. 向服务器端提交数据的两种方式

    朴素版:                                                                                                 ...

最新文章

  1. 使用php读写mysql数据库并显示到网页上
  2. OSChina 周六乱弹 —— 去做点疯狂的事情
  3. linux裁剪—定制自己所需要的linux
  4. 关于数位动规(入门到进阶,难度中档)
  5. 【opencv】边缘提取或通过二值图片提取对应的三维图像(python)
  6. Markdown用法
  7. CentOS 内核升级的总结
  8. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
  9. 360补丁打上以后漏洞依然存在?
  10. Javascript:Promise异步编程解决方案
  11. Rime中州韵导入QQ五笔词库
  12. 【Endnote】CNKI E-Study与Endnote 的参考文献题录互导
  13. 头脑王者 物理化学生物
  14. iOS 最新AppStore申请加急审核 以及 apple联系方式大全
  15. linux常用命令知识点
  16. 利用Python3中turtle的绘制超立方体。
  17. 嵌入式系统开发-麦子学院(3)——Linux C初级编程1
  18. 浩辰cad2017破解版|浩辰电气cad2017无限使用破解版下载
  19. SEO人员,如何保持创新思维?
  20. 新时代动画电影的互联网宣传

热门文章

  1. 赵强老师:Oracle数据库系列课程(20)优化数据库-赵强老师-专题视频课程
  2. quarkus实战之一:准备工作
  3. JavaWeb,HTTP和Tomcat
  4. 计算机公式表大全,最全小学数学公式大全
  5. 校园道路交通安全调查
  6. 学校校车运营各项安全管理制度_学校校车安全管理制度汇编
  7. /tmp 和 /var/tmp 的区别
  8. HTML CSS 浮动练习(仿猫眼电影)
  9. html5刮彩效果,HTML5 Canvas炫酷彩虹色波浪线动画特效代码
  10. 光电收发管RPR220介绍