using UnityEngine; using UnityEditor; public class SimpleImageViewerWindow : EditorWindow { private Texture2D image; private string imagePath = "Assets/ResRaw/ZH/1.png"; private float setWidth = 750f; private float setHeight = 1334f; [MenuItem("NBC/ZH/Simple Image Viewer")] public static void ShowWindow() { GetWindow("Game"); } private void OnEnable() { // 加载图片 image = AssetDatabase.LoadAssetAtPath(imagePath); if (image == null) { Debug.LogError($"无法加载图片: {imagePath}"); } } private void OnGUI() { if (image == null) { EditorGUILayout.HelpBox($"图片加载失败: {imagePath}", MessageType.Error); return; } // 计算图片的宽高比 float imageAspect = setWidth / setHeight; // 获取窗口的可用区域(考虑一些边距) float availableWidth = position.width; float availableHeight = position.height; // 计算自适应尺寸(保持宽高比) float displayWidth = availableWidth; float displayHeight = availableWidth / imageAspect; // 如果高度超过可用高度,则根据高度重新计算 if (displayHeight > availableHeight) { displayHeight = availableHeight; displayWidth = availableHeight * imageAspect; } // 计算居中位置 float horizontalSpace = (position.width - displayWidth) / 2; float verticalSpace = (position.height - displayHeight) / 2; horizontalSpace = Mathf.Max(0, horizontalSpace); verticalSpace = Mathf.Max(0, verticalSpace); // 使用垂直和水平布局来实现居中 GUILayout.BeginVertical(); { // 顶部空白区域 GUILayout.Space(verticalSpace); GUILayout.BeginHorizontal(); { // 左侧空白区域 GUILayout.Space(horizontalSpace); // 绘制图片 Rect imageRect = GUILayoutUtility.GetRect(displayWidth, displayHeight); imageRect.width = displayWidth; imageRect.height = displayHeight; GUI.DrawTexture(imageRect, image); // 右侧空白区域 GUILayout.Space(horizontalSpace); } GUILayout.EndHorizontal(); // 底部空白区域 - 使用 FlexibleSpace 来确保图片在垂直方向居中 GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); } }