EasySave3中文文档翻译

开始

从资产商店导入Easy Save后,您可以立即从脚本和PlayMaker中使用Easy Save。

有关使用自动保存保存和加载代码的信息,请参阅自动保存指南。

有关PlayMaker可用动作的信息,请参阅PlayMaker动作概述。

如果使用程序集定义,请参阅本页底部附近的程序集定义文件部分。

基本保存和加载

Easy Save将数据存储为键和值,就像字典一样。

要保存值,请使用ES3.Save

要加载值,请使用ES3.Load

例如,要将一个整数保存为一个名为myInt的键并再次加载它,你可以这样做:

ES3.Save("myInt", 123);

myInt=ES3.Load<int>("myInt",defaultValue);

如果没有数据要加载,它将返回defaultValue。

如果你没有指定defaultValue,你必须确保有数据要加载(例如使用ES3.KeyExists):

if(ES3.KeyExists("myInt"))

    myInt = ES3.Load<int>("myInt");

要将值加载到现有引用中,请使用ES3.LoadInto:

ES3.LoadInto("myTransform", this.transform);

注意ES3.LoadInto只适用于引用类型,而不适用于基本类型(如int、string)或值类型(如structs)。

保存和加载类,组件和scriptableobject

保存和加载类、组件和ScriptableObjects的方式与保存任何其他数据的方式相同。然而,有一些重要的事情需要注意:

  • 如果满足以下条件,类的字段将被保存:
  • 是公共的,还是有一个[SerializeField]属性
  • 不是const或readonly
  • 没有[Obsolete]或[NonSerialized]属性
  • 是受支持的类型
  • UnityEngine。对象类型通过引用和值存储。
  • 这意味着如果你正在加载的实例已经存在于场景中,它会将数据加载到该实例中,而不是创建一个新实例。
  • 如果类的一个字段是UnityEngine。对象类型(例如Component, ScriptableObject, Texture2D等),它将通过引用保存。
  • 这意味着,如果实例不存在于场景中,将不会在加载时创建新的实例,并且该字段将被设置为空。
  • 如果你希望按值保存它们,你应该用一个单独的ES3.Save保存调用并在加载引用它们的任何东西之前加载它们。

保存和加载游戏对象和预制件

保存和加载游戏对象和预制件。GameObjects像其他对象一样被保存和加载。以下关于GameObject的信息将被保存:

这将保存并加载GameObject的以下内容:

  • 图层,标签,名称和hideFlags。
  • 本机支持类型列表中的组件,或者使用ES3Type手动支持的组件。
  • 以上所有内容适用于GameObject的每一个子对象。

有关保存和加载预制实例的信息,请参阅保存和加载预制实例指南。

保存和加载集合

你也可以保存和加载数组、列表、字典、队列、堆栈和哈希集,就像你保存和加载任何其他数据一样。

  • Array

ES3.Save("myArray", myArray);

myArray = ES3.Load("myArray", defaultValue);

  • List

ES3.Save("myList", myList);

myList = ES3.Load("myList", defaultValue);

  • Dictionary

ES3.Save("myDictionary", myDictionary);

myDictionary = ES3.Load("myDictionary", defaultValue);

  • 2D Array

ES3.Save("my2DArray", my2DArray);

my2DArray = ES3.Load("my2DArray", defaultValue);

  • Queue

ES3.Save("myQueue", myQueue);

myQueue = ES3.Load("myQueue", defaultValue);

  • HashSet

ES3.Save("myHashSet", myHashSet);

myHashSet = ES3.Load("myHashSet", defaultValue);

  • Stack

ES3.Save("myStack", myStack);

myStack = ES3.Load("myStack", defaultValue);

何时保存和加载

对于大多数项目来说,在Start()中加载,在OnApplicationQuit()或OnApplicationPause(true)中保存是有意义的。

您还可以使用按钮来保存和加载。

保存数据存储在哪里

默认情况下保存数据存储在Unity的Application.persistentDataPath,您可以在它们的文档中找到它的位置。您可以在编辑器中打开该路径:工具> Easy Save 3 > open Persistent Data path。

例外是WebGL,它将数据存储到PlayerPrefs,而PlayerPrefs又将数据存储到IndexedDB。

更改文件名或路径

filePath参数允许您指定数据保存的位置。如果该文件或文件夹不存在,系统将自动创建它。

它可以是文件名、相对路径或绝对路径。有关更多信息,请参阅路径和位置指南。

  • Filename文件名

ES3.Save("myKey", myValue, "myFile.es3”);

  • Relative path相对路径

ES3.Save("myKey", myValue, "myFolder/myFile.es3”);

  • Absolute path绝对路径

ES3.Save("myKey", myValue, "C:/Users/User/Documents/myFile.es3);

删除

  • Delete a key

ES3.DeleteKey("myKey", "myFolder/myFile.es3”);

  • Delete a file

ES3.DeleteFile("myFolder/myFile.es3”);

  • Delete a directory

ES3.DeleteDirectory("myFolder/“);

改变设置

通过Window > Easy Save 3 > settings更改默认设置。

通过提供ES3Settings对象作为参数,在运行时启用设置。更多信息请参见ES3Settings页面。

  • Enable encryption启动加密

var settings = new ES3Settings(ES3.EncryptionType.AES, myPassword);

ES3.Save("key", data, settings);

ES3.Load("key", data, settings);

  • Enable compression启动压缩

var settings = new ES3Settings(ES3.CompressionType.Gzip);

ES3.Save("key", data, settings);

ES3.Load("key", data, settings);

什么可以保存和加载

要查看支持的类型,请参阅支持的类型指南。

错误处理

与所有代码一样,建议您处理错误。这可以使用try/catch块来捕获异常,并在必要时向用户显示适当的消息。例如:

try

{

    ES3.Save("key", 123);

    ES3.Save("key2", 456);

}

catch(System.IO.IOException)

{

    DisplayMessageToUser("The file is open elsewhere or there was not enough storage space");

}

catch(System.Security.SecurityException)

{

    DisplayMessageToUser("You do not have the required permissions");

}

程序集定义文件

您可以通过进入Tools > Easy Save 3 > enable assembly definition files来启用Easy Save的程序集定义文件。

如果您想从程序集访问EasySave3,请将EasySave3 asmdef添加到程序集的asmdef的程序集定义引用列表中。

重要的提示

以下是人们在Unity中保存和加载数据时需要注意的一些重要事项:

  • 您应该只保存需要保存和加载的数据。例如,你应该只选择需要保存的组件,而不是保存整个GameObject。
  • 不可能加载对不再存在的东西的引用。例如,如果你在运行时创建一个对象,当你退出场景或退出应用程序时,具有此引用ID的对象将不再存在。有关如何处理此问题的信息,请参阅保存和加载引用指南。
  • 有些组件(如playercontroller或AI控制器)可能会缓存对象的位置,这意味着保存和加载对象的Transform不会对对象的位置产生任何影响。在这种情况下,可能需要在加载之前禁用控制位置的组件,并在加载后重新启用它。

Further Reading

使用案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值