在 hololens 场景重启后应用坐标

Apply coordinates after scene restart in hololens

我现在有以下设置:

一旦用户与程序交互,场景在某个时刻重新启动,则应该发生以下情况:

代码:

DataPositionStorer positionStorer = new GameObject("DataPositionStorer").AddComponent<DataPositionStorer>();
DontDestroyOnLoad(positionStorer.gameObject);
// dataPoints is the specific object I need to keep the coordinates of
positionStorer.Position = dataPoints.transform.position;
positionStorer.Rotation = dataPoints.transform.rotation;
positionStorer.Zoom = dataPoints.transform.localScale;

// Reload current scene ("Main")
SceneManager.LoadScene(SceneManager.GetActiveScene().name);

并且在对象的启动方法中:

DataPositionStorer positionStorer = FindObjectOfType<DataPositionStorer>();
if (positionStorer!= null)
{
    dataPoints.transform.position = positionStorer.Position;
    dataPoints.transform.localRotation = positionStorer.Rotation;
    dataPoints.transform.localScale = positionStorer.Zoom;
}

此设置适用于 unity 播放器,但一旦我 运行 它在全息透镜模拟器/全息透镜上,之后的位置就不再正确了。

有人可以帮我解决模拟器/全息镜头上的这个问题吗?

感谢两位评论我找到了解决方案:

  • 在Setup场景中加载WorldAnchorManager脚本并使其成为DontDestroyOnLoad
  • 场景重启前附加一个世界锚点
  • 场景重启后加载World Anchor

但这只适用于模拟器/HoloLens 本身。在 Unity Editor 中,World Anchors 不起作用!所以只需复制粘贴坐标,就像我在初始 post.

中所做的那样