0
我正在使用以下腳本來啓用/禁用WebGL上的攝像頭。Unity WebGL WebcamTexture攝像頭燈在禁用攝像頭後保持亮起
它在編輯器上工作正常,但在瀏覽器上,停用WebcamTexture後,攝像頭燈仍然亮着。
它發生在Chrome和Firefox上。
任何想法?
謝謝。
WebCamTexture _webcamTexture;
public void Enable()
{
#if UNITY_EDITOR || DEVELOPMENT_BUILD
Debug.Log("Enable");
#endif
_enabled = true;
}
public void Disable()
{
#if UNITY_EDITOR || DEVELOPMENT_BUILD
Debug.Log("Disable");
#endif
_enabled = false;
}
#region MONOBEHAVIOUR
void Update()
{
if(_enabled)
{
if(_webcamTexture == null)
{
while(!Application.RequestUserAuthorization(UserAuthorization.WebCam).isDone)
{
return;
}
if (Application.HasUserAuthorization(UserAuthorization.WebCam))
{
#if UNITY_EDITOR || DEVELOPMENT_BUILD
Debug.Log("Webcam authorized");
#endif
_webcamTexture = new WebCamTexture (WebCamTexture.devices[0].name);
_webcamTexture.Play();
}
else
{
#if UNITY_EDITOR || DEVELOPMENT_BUILD
Debug.Log("Webcam NOT authorized");
#endif
}
}
else if (_webcamTexture.isPlaying)
{
if(!_ready)
{
if (_webcamTexture.width < 100)
{
return;
}
_ready = true;
}
if(_webcamTexture.didUpdateThisFrame)
{
_aspectRatioFitter.aspectRatio = (float)_webcamTexture.width/(float)_webcamTexture.height;
_imageRectTransform.localEulerAngles = new Vector3 (0, 0, -_webcamTexture.videoRotationAngle);
_image.texture = _webcamTexture;
}
}
}
else
{
if(_webcamTexture != null)
{
_webcamTexture.Stop();
_webcamTexture = null;
_image.texture = null;
}
}
}
#endregion
感謝您的回答。我打電話給_webcamTexture.Stop();更新時將_enabled設置爲false。我已經在Disable方法中試過了。它不應該有任何區別,對吧? –
我知道你是。這是完全錯誤的。當應用程序存在時,'Update'函數被終止。如果if語句甚至沒有運行,該怎麼辦?這就是爲什麼你應該停止/結束'OnDisable'函數而不是'Update'函數中的東西。試試我的解決方案。當你關閉標籤時會發生這個問題? – Programmer
當我按下UI按鈕時,將調用Disable方法。我沒有終止該應用程序。我想在應用程序運行時啓用/禁用相機。當我關閉標籤時,指示燈熄滅。 –