第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Unity3d 中在運行時禁用/啟用 ARKit - C#

在 Unity3d 中在運行時禁用/啟用 ARKit - C#

C#
阿晨1998 2021-10-24 17:51:45
我正在使用 Unity3d,使用 C# 和 ARKit 插件(來自 Github 的 2.0)在我當前的應用程序中,我使用 ARKit 來測量距離。我創(chuàng)建的工具僅出于這個原因才需要此功能,所以我想知道如何啟用 ARKit,當用戶需要標尺并禁用它時,如果不需要。我想避免在用戶使用非 ARKit 工具時出現(xiàn)一些性能損失。我是對的,如果我要說,ARKit 仍然在后臺工作,如果你在哪里初始化它一次?我是 ARKit 的新手,所以我對如何處理它沒有一個完美的概述。刪除一些代碼行沒有任何意義,它基本上是項目中的插件導入,以及我自己的依賴于某些功能的腳本 - 我沒有更改插件的源代碼中的任何內(nèi)容。我編程的測量工具本身運行良好,但我無法確定如何激活和停用 ARKit。有人可以幫我解決這個問題嗎?當我禁用游戲對象時,正在運行的腳本似乎是一種避免這些功能的“骯臟”方法,但我必須使其干凈(例如,背景中的視頻地圖也需要禁用 - 我猜那些ARKit 函數(shù)不會被暫?;蚪?,只是因為某些腳本被禁用,api 似乎仍在后臺運行,因為它在我這樣做時滯后)如果您需要更多信息,請告訴我。每一個幫助或建議都會非常好。
查看完整描述

2 回答

?
紅顏莎娜

TA貢獻1842條經(jīng)驗 獲得超13個贊

當前的 ARKit API 沒有在運行時在 Unity 中禁用或啟用它的方法。


話雖如此,Unity 有自己的功能來啟用和禁用 VR、AR 或 XR 插件。如果 ARKit 構建正確,則此方法應該有效。因此,您可以通過設置為禁用/啟用 ARKit并通過將其設置XRSettings.enabled為false啟用它true。


這也是一個好主意,叫XRSettings.LoadDeviceByName一個空字符串,等待幀,設置前XRSettings.enabled要false禁用它:


IEnumerator DisableAR()

{

    XRSettings.LoadDeviceByName("");

    yield return null;

    XRSettings.enabled = false;

}

然后調用禁用:


StartCoroutine(DisableAR());


查看完整回答
反對 回復 2021-10-24
?
慕容森

TA貢獻1853條經(jīng)驗 獲得超18個贊

我想我正在回答一個很老的帖子。我找到了一種方法,但我不知道這是否是您的期望。


就像@Programmer 說的


當前的 ARKit API 沒有在運行時在 Unity 中禁用或啟用它的方法。


所以我使用的方法是結合程序員的代碼,如果你需要相機來渲染一些天空盒或純色,我在非 AR 模式下做了類似的事情,通過在更改之前保存當前紋理,作為實時視頻將紋理作為材質提供,保存后將紋理更改為空,當您想要重新啟用 AR 時,您將紋理設置回保存的值,并正確加載。


    bool ARMode;

    bool isSupported;

    Camera cam;

    UnityARCameraManager ARCameraManager;

    private Texture2D _videoTextureY;

    private Texture2D _videoTextureCbCr;


    private void Awake()

    {

        cam = Camera.main;

        isSupported = FindObjectOfType<UnityARCameraManager>().sessionConfiguration.IsSupported;

        ARMode = isSupported;

        ARCameraManager = FindObjectOfType<UnityARCameraManager>();

    }


    void DisableAR()

    {


        XRSettings.enabled = false;

        ARCameraManager.enabled = false;

        _videoTextureY = (Texture2D)cam.GetComponent<UnityARVideo>().m_ClearMaterial.GetTexture("_textureY");

        _videoTextureCbCr = (Texture2D)cam.GetComponent<UnityARVideo>().m_ClearMaterial.GetTexture("_textureCbCr");


        cam.GetComponent<UnityARVideo>().m_ClearMaterial.SetTexture("_textureY", Texture2D.blackTexture);

        cam.GetComponent<UnityARVideo>().m_ClearMaterial.SetTexture("_textureCbCr", Texture2D.blackTexture);

        cam.clearFlags = CameraClearFlags.SolidColor;

        cam.backgroundColor = Color.black;

        cam.GetComponent<UnityARVideo>().enabled = false;

    }


    void EnableAR()

    {

        ARCameraManager.enabled = true;

        XRSettings.enabled = true;

        cam.clearFlags = CameraClearFlags.Depth;

        cam.GetComponent<UnityARVideo>().m_ClearMaterial.SetTexture("_textureY", _videoTextureY);

        cam.GetComponent<UnityARVideo().m_ClearMaterial.SetTexture("_textureCbCr", _videoTextureCbCr);

        cam.GetComponent<UnityARVideo>().enabled = true;

    }


查看完整回答
反對 回復 2021-10-24
  • 2 回答
  • 0 關注
  • 386 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號