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());

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;
}
- 2 回答
- 0 關注
- 386 瀏覽
添加回答
舉報