gpt4 book ai didi

c# - 如何在 Windows Phone 上统一减少 WebCameraTexture 使用的内存?

转载 作者:行者123 更新时间:2023-11-30 16:00:48 26 4
gpt4 key购买 nike

我在 unity3d 中为 Windows Phone 平台制作了一个带有两个简单 View 的演示应用程序。在第一个 View 中,我有一个按钮和一个文本,从检查器中我分配给按钮一个事件(单击时)以打开第二个 View 。在这个 View 中,我在面板中有一个原始图像,用于将 mainTexture 分配给 webCamTexture 以在手机上启动相机。

var webCamTexture = new WebCamTexture();
rawImage.material.mainTexture = webCamTexture;
webCamTexture.Play();

在第二个 View 中,我有一个按钮,我可以在其中关闭相机并显示第一个 View (关闭当前 View )webCameraTexture.Stop();

如果我多次这样做,我手机上的 Play() 和 Stop() 内存将如下所示:

enter image description here

我怎样才能清除内存,当我停止相机时,因为有时会给我一个错误“没有足够的存储来完成这个操作”并退出应用程序。

代码开始停止摄像头:

    //call onClick Button (next)
public void StartMyCamera()
{
webCamTexture = new WebCamTexture();
rawImage.material.mainTexture = webCamTexture;
webCamTexture.Play();
}
//call onClick btn (back - close camera)
public void StopMyCamera()
{
//to stop camera need only this line
webCamTexture.Stop();
//----try to clear
/*GL.Clear(false, true, Color.clear);
GC.Collect();
GC.WaitForPendingFinalizers();
rawImage.StopAllCoroutines();*/
//----
}

Second test

Try to clean Cache

最佳答案

目前您正在播放视频:

var webCamTexture = new WebCamTexture();
rawImage.material.mainTexture = webCamTexture;
webCamTexture.Play();

并用

停止
webCameraTexture.Stop();

这正是您的代码告诉它要做的事情。 new WebCamTexture() 代码行预计在每次调用时分配内存。您应该在 Start() 函数中仅执行一次,然后您可以播放停止 相机没有内存分配。

public RawImage rawImage;
WebCamTexture webCamTexture;

void Start()
{
intCam(); //Do this once. Only once
}

void intCam()
{
webCamTexture = new WebCamTexture();
rawImage.material.mainTexture = webCamTexture;
}

public void StartMyCamera()
{
webCamTexture.Play();
}

public void StopMyCamera()
{
//to stop camera need only this line
webCamTexture.Stop();
}

关于c# - 如何在 Windows Phone 上统一减少 WebCameraTexture 使用的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39659137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com