可以通过在Editor文件夹下创建一个Editor脚本来实现在Scene窗口下显示图片并自适应大小。以下是一个示例脚本:

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(MyScript))]
public class MyScriptEditor : Editor
{
    private Texture2D image;

    public override void OnInspectorGUI()
    {
        MyScript myScript = (MyScript)target;

        // 显示图片
        if (image == null)
        {
            image = AssetPreview.GetAssetPreview(myScript.image);
        }
        GUILayout.Label(image, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));

        // 更换图片
        GUILayout.Space(10);
        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("Image:");
        myScript.image = (Texture2D)EditorGUILayout.ObjectField(myScript.image, typeof(Texture2D), false, GUILayout.ExpandWidth(true));
        EditorGUILayout.EndHorizontal();
    }

    private void OnSceneGUI()
    {
        MyScript myScript = (MyScript)target;

        // 自适应大小
        float size = HandleUtility.GetHandleSize(myScript.transform.position) * 0.5f;
        Vector3 position = myScript.transform.position + Vector3.up * size * 1.5f;
        Handles.BeginGUI();
        GUI.DrawTexture(new Rect(position.x - size, position.y - size, size * 2, size * 2), myScript.image, ScaleMode.ScaleToFit);
        Handles.EndGUI();
    }
}

该脚本通过继承Editor类并重写OnInspectorGUI和OnSceneGUI方法来实现在Inspector窗口和Scene窗口下显示图片。在Inspector窗口下,使用GUILayout.Label方法显示图片,并使用EditorGUILayout.ObjectField方法实现更换图片的功能。在Scene窗口下,使用Handles.BeginGUI和GUI.DrawTexture方法实现自适应大小的图片显示。

注意,在使用GUI.DrawTexture方法时,需要使用HandleUtility.GetHandleSize方法获取当前物体的大小,并根据其进行自适应大小的计算。

UnityEditor如何用代码在Scene窗口下实现图片显示和跟换并且自适应大小

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

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