IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity实现存档的不同方法 -> 正文阅读

[游戏开发]Unity实现存档的不同方法

PlayerPres类

这个类简单易懂,但只能存取int,float,string类,而且在调试过程中所产生的变化都会保留,最重要的是污染注册表。

脚本序列化

序列化是将数据结构或对象状态转换为 Unity 可存储并在以后可重构的格式的自动过程。Unity 的一些内置功能会使用序列化,比如保存和加载、Inspector 窗口、实例化和预制件等功能。

序列化规则

Unity 中的序列化程序在实时游戏环境中运行。这对性能有重大影响。因此,Unity 中的序列化与其他编程环境中的序列化具有不同的行为。以下部分概述了如何在 Unity 中使用序列化。要使用字段序列化,必须确保其:

  • public,或具有 SerializeField属性
  • static
  • const
  • readonly
  • 具有可序列化的 fieldtype

可序列化的简单字段类型

  • 具有 Serializable 属性的自定义非抽象、非泛型类
  • 具有 Serializable 属性的自定义结构
  • 可序列化的简单字段类型的数组、 List<T>
  • 原始数据类型(intfloatdoubleboolstring 等)
  • 枚举类型
  • 某些 Unity 内置类型:Vector2Vector3Vector4RectQuaternionMatrix4x4、`在这里插入图片描述

存储无法序列化类的解决方法

在这里插入图片描述

总之,确保自定义类可序列化需要具有 Serializable 属性、非抽象、非静态、非泛型(但可继承自泛型类)

此外在某些情况下,脚本序列化可能会导致错误。

从构造函数或字段初始化函数以及反序列化期间调用 Unity Scripting API

在 MonoBehaviour构造函数或字段初始化函数中调用诸如 GameObject.Find 之类的脚本 API 会触发错误:“Find is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call in in Awake or Start instead.”

解决此问题的方法是在 MonoBehaviour.Start中而不是在构造函数中调用脚本 API。

Json类

之所以要了解序列化的知识,就是因为Json存储就是通过序列化来实现的

首先我们需要创建一个类来表明需要存储哪些数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7E2UuxIj-1646546826174)(C:\Users\ycy\AppData\Roaming\Typora\typora-user-images\image-20220306120115115.png)]

Json文件如何转化

使用unity中的JsonUtility类可以让可序列化对象和Json数据相互转换
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WCWE9kTc-1646546826175)(C:\Users\ycy\AppData\Roaming\Typora\typora-user-images\image-20220306122024170.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DJhzh7Gj-1646546826176)(C:\Users\ycy\AppData\Roaming\Typora\typora-user-images\image-20220306134131674.png)]
在这里插入图片描述

注意:

  • File类需要using System.IO
  • Application.persistentDataPath 返回一个持久数据目录的路径(不同平台的路径不同,因此也不用担心存档找不到)
  • Path.Combine 将string类型合并成路径名
  • File.WriteAllText(string path,string contents)

我们创建该类的实例便可以储存,如果是敌人的话,创建多个实例存储即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CtBxkzeB-1646546826177)(C:\Users\ycy\AppData\Roaming\Typora\typora-user-images\image-20220306135024042.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-REam3qgT-1646546826177)(C:\Users\ycy\AppData\Roaming\Typora\typora-user-images\image-20220306135040973.png)]

此外呢,还有.FromJsonOverwrite可以重写原有数据,用于覆盖存档

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:58:11  更:2022-03-10 22:59:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 14:37:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码