UnityのCustomPropertyDrawerを利用してInspectorのGUIを変更してみます。
はじめに
Unityのバージョンは「2021.3.14f1」で作成しています。
PropertyDrawerを利用してInspectorの表示を変更してみます。
実装開始
まずは下記のスクリプトを作成します。
using UnityEngine;
public class InspectorTest : MonoBehaviour
{
public int volume;
}
オブジェクトにスクリプトを追加すると、下記のようにInspectorに表示されます。

下記のように記載すると、Inspectorにヘッダーを追加することができます。
using UnityEngine;
public class InspectorTest : MonoBehaviour
{
[Header("---Config---")]
public int volume;
}

また、下記のようにすると、上限値、下限値をセットすることもできます。
using UnityEngine;
public class InspectorTest : MonoBehaviour
{
[Header("---Config---")]
[Range(0, 100)] public int volume;
}

これらはUnityが標準で用意しているものですが、自分で好きなようにInspector表示を作成することもできます。
CustomPropertyDrawerを利用する
スクリプトを下記に変更します。int型の変数二つをシリアル化したシンプルなものです。
using UnityEngine;
public class InspectorTest : MonoBehaviour
{
public ConfigClass con;
}
[System.Serializable]
public class ConfigClass
{
public int sfx;
public int volume;
}
そのままだとInspectorには下記のように表示されます。

次に下記スクリプトを作成します。
using UnityEngine;
using UnityEditor;
[CustomPropertyDrawer(typeof(ConfigClass))]
public class Drawer : PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
EditorGUI.BeginProperty(position, label, property);
position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label);
var indent = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
EditorGUIUtility.labelWidth = 40;
var sfxRect = new Rect(position.x, position.y, 80, position.height);
var volumeRect = new Rect(position.x + 90, position.y, 80, position.height);
EditorGUI.PropertyField(sfxRect, property.FindPropertyRelative("sfx"),new GUIContent("SFX"));
EditorGUI.PropertyField(volumeRect, property.FindPropertyRelative("volume"), new GUIContent("VOL"));
EditorGUI.indentLevel = indent;
EditorGUI.EndProperty();
}
}
下記のように横並びで表示されるようになります。

長いスクリプトですが、実際に表示を変更しているのは下記の部分です。
EditorGUIUtility.labelWidth = 40;
var sfxRect = new Rect(position.x, position.y, 80, position.height);
var volumeRect = new Rect(position.x + 90, position.y, 80, position.height);
EditorGUI.PropertyField(sfxRect, property.FindPropertyRelative("sfx"),new GUIContent("SFX"));
EditorGUI.PropertyField(volumeRect, property.FindPropertyRelative("volume"), new GUIContent("VOL"));
下記のように変更すると、スライダーを2つ並べることもできます。
var sfxRect = new Rect(position.x, position.y, 150, position.height);
var volumeRect = new Rect(position.x+160, position.y, 150, position.height);
EditorGUI.IntSlider(sfxRect, property.FindPropertyRelative("sfx"), 0, 100, new GUIContent("SFX"));
EditorGUI.IntSlider(volumeRect, property.FindPropertyRelative("volume"), 0, 100, new GUIContent("VOL"));

詳しくは下記の公式リファレンスにて。
