Вы должны освободить RenderTexture
после использования, как derHugo сказал в своем ответе. К сожалению, создание и уничтожение RenderTexture
обходится каждый раз, когда вызывается OnGUI
, а OnGUI
вызывается даже чаще, чем функция Update
.
Было бы лучше получить временный рендер с RenderTexture.GetTemporary
, а затем отпустить его с RenderTexture.ReleaseTemporary
, когда вы закончите с ним. Обратите внимание, что в прошлом на некоторых платформах была ошибка с функцией RenderTexture.ReleaseTemporary
. Я предполагаю, что теперь это исправлено, но если у вас возникнут проблемы с ним, то используйте решение other .
public class PlayerViewWindow : EditorWindow
{
private Camera PlayerViewCamera; // References a camera in the scene
public void OnGUI()
{
Vector2 size = new Vector2(position.width, position.width);
//Get temporary RenderTexture
RenderTexture tempRT = RenderTexture.GetTemporary((int)size.x, (int)size.y, 24, RenderTextureFormat.ARGB32);
PlayerViewCamera.targetTexture = tempRT;
PlayerViewCamera.Render();
GUI.DrawTexture(new Rect(0, 0, size.x, size.x), PlayerViewCamera.targetTexture);
//Release temporary RenderTexture
RenderTexture.ReleaseTemporary(tempRT);
}
}