运行时持久化 (Runtime Persistence)
在某些情况下,需要在构建的应用程序的运行时允许更改属性(例如接口设置)。运行时持久化支持自动存储和检索值,以在会话之间维护设置。
简介
工作原理
- 持久存储:所有定义的值在
OnEnable和Awake方法执行之前加载。 - 自动保存:值在场景关闭时自动保存,确保更改得以保留。
- 使用 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 偏好等值。除了持久化本身,属性还可以配置为在运行时通过选项窗口进行编辑。


如何使用运行时持久化组件
- 附加组件
- 将 Runtime Persistence 脚本添加到包含要保存属性的 GameObject。
- 分配要保存的属性
- 在 Properties to Save 下,点击 + 添加新属性。
- Component:选择包含属性的脚本。
- Name:输入脚本中的确切属性名称。
- 启用自动 UI 集成
- Show in Options (
✔):该属性将自动添加到 realvirtual.io 选项窗口中供用户配置。
- Show in Options (
- 处理事件
- OnValueChanged:在选项窗口中修改属性时触发(用户离开字段后)。
- OnOptionsWindowClosing:在选项窗口关闭时触发。
- 这些事件可用于在值更改时执行自定义逻辑。
示例:鼠标灵敏度控制
使用运行时持久化的一个关键功能是 3D 导航的鼠标灵敏度控制。有关详细信息,请参阅专门的鼠标灵敏度页面。
示例用例(接口配置)
场景: 保存 Denso Interface(DensoCobotta1300)的 IP 地址。
- 组件:
DensoCobotta1300 (Denso Interface) - 属性名称:
ipAdress - 在选项中显示:
✔(IP 字段将出现在 UI 中)。 - OnValueChanged 事件: 调用
OnValueChangedReconnectInterface.OnValueChanged,如果 IP 更改则停用并重新激活接口。