在方法上创建的所有变量都被销毁然后程序完成了吗?

我正在创建一个我将附加到我的网站上的统一项目。因为它在我的网站上,所以我正在尝试尽可能多地优化我的代码或知道如何询问它。我不知道是否在方法中创建的所有变量都被销毁/删除然后程序完成该方法。


例如我有这个方法:


Texture2D TakePhoto()

{

    var currentRT = RenderTexture.active;

    RenderTexture.active = photoCamera.targetTexture;

    photoCamera.Render();

    Texture2D image = new Texture2D(photoCamera.targetTexture.width, photoCamera.targetTexture.height);

    image.ReadPixels(new Rect(0, 0, photoCamera.targetTexture.width, photoCamera.targetTexture.height), 0, 0);

    image.Apply();

    RenderTexture.active = currentRT;

    return image;

}

我应该在方法结束时手动销毁“currentRT”对象吗?还是会自动销毁?我不希望这种信息无谓地四处传播。它也适用于基本变量:整数、字符串、字符等吗?


潇湘沐
浏览 64回答 1
1回答

阿波罗的战车

Unity 不会自动进行垃圾收集Texture2D,如此处所示,这意味着您应该Destroy()在使用结束时调用它。但是,在这种情况下,您可能应该通过引用实例化它,以防止浪费内存,因为您不能在最后销毁,因为您要返回它。这是一个固定的方法:Texture2D TakePhoto(ref Texture2D tex){    var currentRT = RenderTexture.active;    RenderTexture.active = photoCamera.targetTexture;    photoCamera.Render();    tex = new Texture2D(photoCamera.targetTexture.width, photoCamera.targetTexture.height);    tex.ReadPixels(new Rect(0, 0, photoCamera.targetTexture.width, photoCamera.targetTexture.height), 0, 0);    tex.Apply();    RenderTexture.active = currentRT;}
打开App,查看更多内容
随时随地看视频慕课网APP