エディタ内に動的なGUIプレビューやカスタムプレビューを埋め込んだ際、Unityエディタ自体を裏でじわじわと肥大化させフリーズに導く「エディタメモリリーク」の撃退手順です。

\n\n

具体的な解決方法

エディタウィンドウ破棄時のクリーンアップ処理の完全なテンプレートコードです。

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;

public class PreviewEditorWindow : EditorWindow
{
    private Texture2D previewTexture;
    private Material previewMaterial;

    void OnGUI()
    {
        if (previewTexture == null)
        {
            // プレビュー用のテクスチャリソースなどを動的生成
            previewTexture = new Texture2D(128, 128);
        }
        // ...ウィンドウ描画...
    }

    // ➔ ウィンドウが非アクティブ化、または閉じられた時の解放処理
    void OnDisable()
    {
        CleanupResources();
    }

    void OnDestroy()
    {
        CleanupResources();
    }

    private void CleanupResources()
    {
        // エディタリソースはDestroyImmediateを使用してその場で消滅させる必要があります
        if (previewTexture != null)
        {
            DestroyImmediate(previewTexture);
            previewTexture = null;
        }
        if (previewMaterial != null)
        {
            DestroyImmediate(previewMaterial);
            previewMaterial = null;
        }
        Debug.Log("エディタウィンドウ用の一時メモリ資源を完全に解放しました。");
    }
}
#endif