您可以使用 UnityEditor 中的 SceneView.OnSceneGUI 事件来在 Scene 窗口下绘制图片。以下是一个示例代码片段,它会在 Scene 窗口中绘制一个红色的矩形:

using UnityEngine;
using UnityEditor;

[ExecuteInEditMode]
public class DrawImageInScene : MonoBehaviour
{
    public Texture2D image;

    private void OnEnable()
    {
        SceneView.onSceneGUIDelegate += OnSceneGUI;
    }

    private void OnDisable()
    {
        SceneView.onSceneGUIDelegate -= OnSceneGUI;
    }

    private void OnSceneGUI(SceneView sceneView)
    {
        if (image == null)
            return;

        Handles.BeginGUI();

        // 计算图片在 Scene 窗口中的位置和大小
        Vector2 size = new Vector2(image.width, image.height);
        Rect rect = new Rect(Vector2.zero, size);
        rect.position = new Vector2(sceneView.position.width - size.x - 20, 20);

        // 绘制图片
        GUI.DrawTexture(rect, image, ScaleMode.ScaleToFit, true);

        Handles.EndGUI();
    }
}

在这个示例中,我们首先在 OnEnable 方法中注册了 SceneView.onSceneGUIDelegate 事件,在 OnDisable 方法中取消了注册。然后在 OnSceneGUI 方法中,我们使用 Handles.BeginGUI() 和 Handles.EndGUI() 方法来包装我们的 GUI 代码。在 BeginGUI 和 EndGUI 之间,我们计算了图片在 Scene 窗口中的位置和大小,并使用 GUI.DrawTexture 方法绘制了图片。

我们使用 ScaleMode.ScaleToFit 参数来保持图片的纵横比,并使用 true 参数来防止图片被拉伸。这样,图片就会自适应大小,始终保持其原始比例。

请注意,此代码片段是在 ExecuteInEditMode 模式下运行的,这意味着它可以在编辑器中实时运行。如果您在运行时模式下使用此代码,请确保在构建项目之前将其禁用或删除。

UnityEditor 代码实现 Scene 窗口图片显示及自适应大小

原文地址: https://www.cveoy.top/t/topic/mvc7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录