エディタ拡張をしていると仕切り線がほしくなることがありますが、そのような機能は残念ながら今のところありません。
しかし GUILayout.Box
を使えばそれっぽいものを描くことができます。
GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1));
これだけ。高さは1にしてしまいます。
ちなみに、Boxにも EditorGUILayout.BeginHorizontal()
と GUILayout.Space()
は有効であるため、これらを使うことでインデントに対応できます。
コードはこちら。
EditorGUILayoutEx.cs
using UnityEngine;
using UnityEditor;
public class EditorGUILayoutEx {
/// <summary>
/// インデントレベル設定を考慮した仕切り線.
/// </summary>
/// <param name="useIndentLevel">インデントレベルを考慮するか.</param>
public static void Separator(bool useIndentLevel = false)
{
EditorGUILayout.BeginHorizontal();
if (useIndentLevel)
{
GUILayout.Space(EditorGUI.indentLevel * 15);
}
GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1));
EditorGUILayout.EndHorizontal();
}
/// <summary>
/// インデントレベルを設定する仕切り線.
/// </summary>
/// <param name="indentLevel">インデントレベル</param>
public static void Separator(int indentLevel)
{
EditorGUILayout.BeginHorizontal();
GUILayout.Space(indentLevel * 15);
GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1));
EditorGUILayout.EndHorizontal();
}
}
使用例とそのコードはこんな感じです。
SampleClass.cs
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(SampleClass))]
public class SampleClassInspector : Editor {
public override void OnInspectorGUI()
{
DrawDefaultInspector();
EditorGUI.indentLevel = 1;
GUILayout.Label("----- 以下インデントレベル1 -----");
EditorGUILayoutEx.Separator();
EditorGUILayout.PrefixLabel("↑ レベル無視インデント0");
EditorGUILayoutEx.Separator(true);
EditorGUILayout.PrefixLabel("↑ レベルに従う");
GUILayout.Space(10);
EditorGUI.indentLevel = 0;
GUILayout.Label("----- 以下インデントレベル0 -----");
EditorGUILayoutEx.Separator(2);
EditorGUILayout.PrefixLabel("↑ レベル無視インデント2");
EditorGUILayoutEx.Separator(3);
EditorGUILayout.PrefixLabel("↑ レベル無視インデント3");
}
}
参考:http://answers.unity3d.com/questions/216584/horizontal-line.html (ベストアンサーのコメント末尾)