1 想要一个适配窗口居中的按钮
// 获取当前屏幕的矩形大小
Rect screenRect = GUILayoutUtility.GetLastRect();
// 创建一个矩形区域,固定在屏幕顶部
GUILayout.BeginArea(new Rect(screenRect.x + position.width / 2 - 150 / 2, screenRect.y + count * EditorGUIUtility.singleLineHeight + 40, 150, 50), new GUIContent("这是区域"), new GUIStyle());
//在矩形区域内添加其他内容
if (GUILayout.Button("打包!", GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)))
{
// Do something when the button is clicked
}
// 结束矩形区域的绘制
GUILayout.EndArea();
2 想要获取一个组件的高度
using UnityEditor;
using UnityEngine;
public class MyEditorWindow : EditorWindow {
private SerializedProperty myProperty;
void OnEnable() {
// 获取要显示的 SerializedProperty 对象
myProperty = serializedObject.FindProperty("myPropertyName");
}
void OnGUI() {
// 使用 EditorGUI.GetPropertyHeight 方法获取组件的高度
float height = EditorGUI.GetPropertyHeight(myProperty, true);
// 在 GUI 中绘制组件
EditorGUILayout.PropertyField(myProperty, GUILayout.Height(height));
}
}
3 组件中 想要缩进
++EditorGUI.indentLevel; GUILayout.Label("------"); EditorGUILayout.PropertyField(pointCount,new GUIContent("顶点个数"));
4 想要重新绘制 gui
设置脏标记
然后保存修改
if (GUI.changed)
{
EditorUtility.SetDirty(target);
this.serializedObject.ApplyModifiedProperties();
}