在Windows Phone上如何统一减少WebCameraTexture占用的内存?

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

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

在第二个视图中,我有一个按钮可以关闭相机并显示一个视图(当前关闭).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

解决方法:

“ Resources.UnloadUnusedAssets()”有助于解决您的问题.

public void StopMyCamera()
{
webCamTexture.Stop();
Resources.UnloadUnusedAssets();
}

相关文章

前言 本文记录unity3D开发环境的搭建 unity安装 unity有中文...
前言 有时候我们希望公告牌跟随镜头旋转永远平行面向屏幕,同...
前言 经过一段时间的学习与实际开发,unity3D也勉强算是强行...
前言 在unity中我们常用的获取鼠标点击的方法有: 1、在3D场...
前言 在之前的例子中,我们都没有用到unity的精髓,例如地形...
这篇文章将为大家详细讲解有关Unity3D中如何通过Animator动画...