运行时持久化 (Runtime Persistence)

在某些情况下,需要在构建的应用程序的运行时允许更改属性(例如接口设置)。运行时持久化支持自动存储和检索值,以在会话之间维护设置。

简介

工作原理

  • 持久存储:所有定义的值在 OnEnableAwake 方法执行之前加载
  • 自动保存:值在场景关闭时自动保存,确保更改得以保留。
  • 使用 PlayerPrefs:数据使用 Unity 的 PlayerPrefs 系统存储,因平台而异。

数据存储在哪里?

PlayerPrefs 存储位置因平台而异:

  • Windows:存储在注册表中,位置为:

  HKEY_CURRENT_USER\Software\[Company Name]\[Product Name]
  • MacOS:存储在 .plist 文件中,位置为:

  ~/Library/Preferences/unity.[Company Name].[Product Name].plist
  • Linux:保存在 ~/.config/unity3d/ 目录中。

有关更多详细信息,请参阅 Unity PlayerPrefs 文档

通过运行时持久化组件保存数据

运行时持久化组件允许在 Unity 中保存和恢复组件属性无需自定义编程。它支持跨会话自动持久化接口设置、网络配置和 UI 偏好等值。除了持久化本身,属性还可以配置为在运行时通过选项窗口进行编辑。

带有可在运行时更改属性的选项窗口
运行时持久化组件

如何使用运行时持久化组件

  1. 附加组件
    • Runtime Persistence 脚本添加到包含要保存属性的 GameObject。
  2. 分配要保存的属性
    • Properties to Save 下,点击 + 添加新属性。
    • Component:选择包含属性的脚本。
    • Name:输入脚本中的确切属性名称
  3. 启用自动 UI 集成
    • Show in Options ():该属性将自动添加到 realvirtual.io 选项窗口中供用户配置。
  4. 处理事件
    • OnValueChanged:在选项窗口中修改属性时触发(用户离开字段后)。
    • OnOptionsWindowClosing:在选项窗口关闭时触发。
    • 这些事件可用于在值更改时执行自定义逻辑

示例:鼠标灵敏度控制

使用运行时持久化的一个关键功能是 3D 导航的鼠标灵敏度控制。有关详细信息,请参阅专门的鼠标灵敏度页面。

示例用例(接口配置)

场景: 保存 Denso InterfaceDensoCobotta1300)的 IP 地址。

  • 组件: DensoCobotta1300 (Denso Interface)
  • 属性名称: ipAdress
  • 在选项中显示: (IP 字段将出现在 UI 中)。
  • OnValueChanged 事件: 调用 OnValueChangedReconnectInterface.OnValueChanged,如果 IP 更改则停用并重新激活接口