Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在UnityARWorldMap中,用户如何知道游戏对象是否被重新定位?_C#_Unity3d_Arkit - Fatal编程技术网

C# 在UnityARWorldMap中,用户如何知道游戏对象是否被重新定位?

C# 在UnityARWorldMap中,用户如何知道游戏对象是否被重新定位?,c#,unity3d,arkit,C#,Unity3d,Arkit,我已经测试了场景UnityARWorldMap。我已经成功地重新定位了ARworldmap。一旦模型/游戏对象重新定位,我希望跟踪和检测到的平面消失。我发现了一个名为UpdateWorldMappingStatus.cs的类。我尝试添加一些类似于CheckWorldMapStatus方法的代码,我添加了函数CheckIfRelocalized方法。下面是给定的代码 public class UpdateWorldMappingStatus : MonoBehaviour { publi

我已经测试了场景UnityARWorldMap。我已经成功地重新定位了ARworldmap。一旦模型/游戏对象重新定位,我希望跟踪和检测到的平面消失。我发现了一个名为UpdateWorldMappingStatus.cs的类。我尝试添加一些类似于CheckWorldMapStatus方法的代码,我添加了函数CheckIfRelocalized方法。下面是给定的代码

public class UpdateWorldMappingStatus : MonoBehaviour 
{
    public Text text;
    public Text tracking;

    // Use this for initialization
    void Start () 
    {
        UnityARSessionNativeInterface.ARFrameUpdatedEvent += CheckWorldMapStatus;

        // I have subscibed to a event
        UnityARSessionNativeInterface.ARFrameUpdatedEvent += CheckIfRelocalized;
    }

    void CheckWorldMapStatus(UnityARCamera cam)
    {
        text.text = cam.worldMappingStatus.ToString ();
        tracking.text = cam.trackingState.ToString () + " " + cam.trackingReason.ToString ();
    }

    void CheckIfRelocalized(UnityARCamera cam)
    {
        if (cam.worldMappingStatus==ARWorldMappingStatus.ARWorldMappingStatusMapped &&cam.trackingState == ARTrackingState.ARTrackingStateNormal && cam.trackingReason==ARTrackingStateReason.ARTrackingStateReasonNone)
        {
            Debug.Log("Plane Detection Stopped");
            StopPlaneDetection();
        }
    }

    void OnDestroy()
    {
        UnityARSessionNativeInterface.ARFrameUpdatedEvent -= CheckWorldMapStatus;
        UnityARSessionNativeInterface.ARFrameUpdatedEvent -= CheckIfRelocalized;
    }

    public void StopPlaneDetection()
    {
        UnityARSessionNativeInterface session = UnityARSessionNativeInterface.GetARSessionNativeInterface();
        ARKitWorldTrackingSessionConfiguration config = new ARKitWorldTrackingSessionConfiguration();
        config.planeDetection = UnityARPlaneDetection.None;
        config.enableLightEstimation = true;
        //config.enableAutoFocus = true;
        session.RunWithConfig(config);
    }
}

在上面的代码中,当我单击“加载”按钮时,模型立即出现在屏幕前。但是,如果我没有使用CheckIfRelocalized方法,模型在保存时会在其初始设置的位置重新定位,但无法隐藏平面。

我想,如果不重新启动会话,我必须隐藏平面和跟踪?