如何在 Unity 中完全重置 ARKit 场景

How to completely reset an ARKit scene in Unity

大家好,我在使用 ARKit 和 Unity 时遇到了一个小问题。

在我制作的游戏中,我会在玩家死亡时重新加载我的场景,但是当重新加载场景时,所有游戏对象仍处于上次会话的相同位置。当重新加载场景时,我希望所有对象 return 到它们的起始位置。

我看到一些关于位置和旋转的变量在代码中被标记为"static"。我尝试更改它们,但出现了很多编译错误。

有人知道解决这个问题的方法吗?

我找到了解决办法!

将这些代码行添加到您的 ARCameraManager 脚本的“!UnityEditor”部分。

UnityARSessionRunOption options = new UnityARSessionRunOption();
options = UnityARSessionRunOption.ARSessionRunOptionRemoveExistingAnchors | UnityARSessionRunOption.ARSessionRunOptionResetTracking;
m_session.RunWithConfigAndOptions(config, options);

现在,每次重新加载场景时,所有 AR 元素(平面、锚点、相机跟踪数据)都会重置。

创建此方法并在需要重置场景时调用它:

using UnityEngine.XR.iOS;
.
.
.

public void ResetScene() {
ARKitWorldTrackingSessionConfiguration sessionConfig = new ARKitWorldTrackingSessionConfiguration ( UnityARAlignment.UnityARAlignmentGravity, UnityARPlaneDetection.Horizontal);
        UnityARSessionNativeInterface.GetARSessionNativeInterface().RunWithConfigAndOptions(sessionConfig, UnityARSessionRunOption.ARSessionRunOptionRemoveExistingAnchors | UnityARSessionRunOption.ARSessionRunOptionResetTracking);
}