UnityEditor如何用代码在Scene窗口下实现图片显示和跟换并且自适应大小
可以通过在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方法获取当前物体的大小,并根据其进行自适应大小的计算。
原文地址: https://www.cveoy.top/t/topic/65I 著作权归作者所有。请勿转载和采集!