Version: 2023.2

EditorWindow.autoRepaintOnSceneChange

切换到手册
public bool autoRepaintOnSceneChange ;

描述

Enable this property to automatically repaint the window when the SceneView is modified.

\ 渲染主摄像机“看到”的内容的编辑器窗口。

// Simple script that lets you render the main camera in an Editor Window.

using UnityEngine;
using UnityEditor;
using UnityEngine.UIElements;

public class CameraViewer : EditorWindow
{
    Camera camera;
    RenderTexture renderTexture;
    Image image;

    [MenuItem("Examples/Camera Viewer")]
    static void Init()
    {
        EditorWindow editorWindow = GetWindow(typeof(CameraViewer));
        editorWindow.autoRepaintOnSceneChange = true;
        editorWindow.Show();
    }

    public void Awake()
    {
        renderTexture = new RenderTexture((int)position.width,
            (int)position.height,
            (int)RenderTextureFormat.ARGB32);
    }

    public void OnEnable()
    {
        camera = Camera.main;
    }

    void CreateGUI()
    {
        image = new Image();
        image.image = renderTexture;
        image.style.width = Length.Percent(100);
        image.style.height = Length.Percent(100);
        rootVisualElement.Add(image);
    }

    public void Update()
    {
        if (renderTexture.width != position.width ||
            renderTexture.height != position.height)
            renderTexture = new RenderTexture((int)position.width,
                (int)position.height,
                (int)RenderTextureFormat.ARGB32);
            image.image = renderTexture;    

        if (camera != null)
        {
            camera.targetTexture = renderTexture;
            camera.Render();
            camera.targetTexture = null;
        }    
    }
}