在 hololens 场景重启后应用坐标
Apply coordinates after scene restart in hololens
我现在有以下设置:
- "Startup" 初始化所有管理器的场景(空间映射、光标、相机...)
- "Main" 有动画的场景和一个四处移动的物体
一旦用户与程序交互,场景在某个时刻重新启动,则应该发生以下情况:
- 对象的坐标被存储(例如 "storage object" 上的 DontDestroyOnLoad()。我需要销毁对象,因为它需要在场景重启时自行重置)
- 场景重新开始
- 使用存储的坐标重新创建对象
代码:
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.
中所做的那样
我现在有以下设置:
- "Startup" 初始化所有管理器的场景(空间映射、光标、相机...)
- "Main" 有动画的场景和一个四处移动的物体
一旦用户与程序交互,场景在某个时刻重新启动,则应该发生以下情况:
- 对象的坐标被存储(例如 "storage object" 上的 DontDestroyOnLoad()。我需要销毁对象,因为它需要在场景重启时自行重置)
- 场景重新开始
- 使用存储的坐标重新创建对象
代码:
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.
中所做的那样