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();

Unity 编辑器技巧-LMLPHP

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("顶点个数"));

Unity 编辑器技巧-LMLPHP

4 想要重新绘制 gui

设置脏标记

然后保存修改

if (GUI.changed)
{
    EditorUtility.SetDirty(target);
    this.serializedObject.ApplyModifiedProperties();
}
05-26 13:28