如何在编辑器 window 中将字段对齐到行的中心?

How to align fields to the center of the line in editor window?

EditorGUILayout.BeginHorizontal();
allChildren[i] = EditorGUILayout.ObjectField(allChildren[i], typeof(Transform), true) as Transform;
EditorGUILayout.LabelField(names[i]);
EditorGUILayout.EndHorizontal();

使用 Begin/End 水平使标签位于对象字段的右侧。

但现在我希望每个物场和它附近的标签都与中心对齐。 所以每个对象字段和标签字段都将位于它们所在行的中心。

现在它们都向左对齐。

可以在元素之间用FlexibleSpace来填充space没有被元素占用的

EditorGUILayout.BeginHorizontal();
{
    GUILayout.FlexibleSpace(); // Fill Space Beginning

    allChildren[i] = EditorGUILayout.ObjectField(allChildren[i], typeof(Transform), true) as Transform;

    GUILayout.FlexibleSpace(); // Fill Space Middle

    GUILayout.Label(names[i]);

    GUILayout.FlexibleSpace(); // Fill Space End
}
EditorGUILayout.EndHorizontal();

它似乎不适用于 EditorGUILayout.LabelField,上面使用 GUILayout.Label 替换。

如果你想要右半部分的标签和左半部分的对象字段(完全均匀),那么你需要设置每个的显式大小(两者相等)以便居中工作正确。

您使用的所有元素都有 params GUILayoutOption[],这就是您指定元素宽度的方式。例如

GUILayout.Label(names[i], GUILayout.Width(150));