UnityEditor 代码实现 Scene 窗口图片显示及自适应大小
您可以使用 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 模式下运行的,这意味着它可以在编辑器中实时运行。如果您在运行时模式下使用此代码,请确保在构建项目之前将其禁用或删除。
原文地址: https://www.cveoy.top/t/topic/mvc7 著作权归作者所有。请勿转载和采集!