您可以使用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/6YY 著作权归作者所有。请勿转载和采集!

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