如何在编辑器 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));
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));