通过世界锁定工具无法持久保存对象的移动?

问题描述 投票:0回答:1

我正在 Unity 2022.3.20f1 中为 HoloLens 2 制作混合现实游戏。我正在使用 MRTK 3 和一个更新为与 MRTK 3 一起使用的世界锁定工具的分支,因为官方版本不兼容(链接到该分支 在这里)。在游戏中,有人在玩家玩游戏之前设置场景以适应真实环境,因此我希望世界锁定工具能够记住这些对象在此设置阶段的放置位置,之后它们将变得对于玩家来说不可移动。

如果我在后台关闭应用程序,世界锁定工具肯定会工作,因为对象位置在会话之间保持不变。如果我不在后台关闭应用程序,当我将对象移动到其他位置时,它也会持续存在。但问题是,如果我移动对象,然后完全关闭应用程序或关闭 HoloLens,它会将对象移回到移动之前的位置。

我尝试简单地将世界锁定工具管理器放入我的层次结构中,该层次结构适用于世界锁定静态对象。我还尝试禁用自动保存并在用户完成放置对象后调用保存,但这没有改变。

我的世界检查员锁定上下文脚本:here

还有我用来手动保存位置的测试脚本:here

有人知道我在这里做错了什么吗?

unity-game-engine augmented-reality hololens mrtk windows-mixed-reality
1个回答
0
投票

Unity世界锁定工具提供稳定可靠的世界锁定坐标系,将虚拟/全息世界与物理世界绑定。它的目的不是保存游戏对象的位置信息。作为持久空间坐标系| Microsoft Learn 提到,仅保存以下数据。游戏对象不是它的一部分。

  • 空间锚点:由世界锁定工具的锚点管理器内部创建和维护的空间锚点的底层网络提供了与现实世界的必要绑定。这些锚点通过平台的底层存储机制进行持久化。
  • Engine State:保留引擎状态以允许引擎 恢复其当前映射。恢复此状态会删除此类 不确定性作为前一个头部的初始姿势 会话。
  • 空间固定:如果应用程序已应用任何进一步的空间 用于强制将建模坐标与现实世界对齐的引脚 一组离散的点,该映射也被保留。
  • 坐标空间:世界锁定工具保留坐标空间 通过保存本地的内部图来相对于物理世界 空间锚点。

WLT生成稳定可靠的世界锁定坐标系并将虚拟/全息世界与物理世界绑定后,您只需保存游戏对象的坐标和状态变化信息,并在游戏时加载相应的坐标和状态。打开游戏。 WLT 会将其与物理世界同步。就好像普通游戏的坐标系是和游戏世界模型绑定的,你只需要记录物品坐标的变化,然后加载物品的位置即可。

© www.soinside.com 2019 - 2024. All rights reserved.