【发布时间】:2016-09-23 11:00:39
【问题描述】:
我在 unity3d 中为 windows phone 平台制作了一个带有两个简单视图的演示应用程序。在第一个视图中,我有一个按钮和一个文本,从检查器我分配给按钮一个事件(单击时)以打开第二个视图。在这个视图中,我在面板中有一个原始图像,用于将 mainTexture 分配给 webCamTexture 以在手机上启动相机。
var webCamTexture = new WebCamTexture();
rawImage.material.mainTexture = webCamTexture;
webCamTexture.Play();
在第二个视图中,我有一个按钮,用于关闭相机并显示第一个视图(关闭当前)webCameraTexture.Stop();
如果我多次这样做,我手机上的 Play() 和 Stop() 内存看起来像:
当我停止相机时,如何清除内存,因为有时会给我一个错误“没有足够的存储空间来完成此操作”并退出应用程序。
代码开始停止相机:
//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();*/
//----
}
【问题讨论】:
-
在停止纹理时尝试运行垃圾收集器。
-
我尝试使用垃圾收集器 GC.Collect();但没有释放内存仍然长大
-
所以这在这里行不通。您应该继续关注 Unity3d 论坛上的帖子,并可能将其报告为错误。
-
我不认为这是一个错误。 jijie 感谢这次放代码。我在我的窗户上试过这个,没有问题。我确实认为你做错了什么。你能展示你如何启动和停止相机的完整代码吗?
-
对不起,我更新了我的帖子@Programmer。
标签: c# unity3d camera windows-phone