Unity

UnityでGradient EditorをGUIで使うには

Gradient Editorはこういうやつ

gradient.png

グラデーションを作るのに非常に便利で特定の用途にはすごく役に立ちます。
普通のGUIには用意されてないため使うには少し回りくどいやり方をしなければならないです。

PropertyField

EditorGUILayout.PropertyFieldはSerializedPropertyを渡すことで最適なGUIを表示してくれます。
これを使うことでEditorGUIやGUIに用意されていないものも表示できます。
PropertyFieldのリファレンス

実装

public class GradientData : ScriptableObject {
    public Gradient gradient = new Gradient();
}

public override void OnInspectorGUI()
{
    // 本来はメンバ変数などにインスタンスを一つだけ保持しておく 
    GradientData data = CreateInstance<GradientData>();
    SerializedObject serializedGradientData = new SerializedObject(data);
    SerializedProperty gradientProperty = serializedGradientData.FindProperty("gradient");

    EditorGUI.BeginChangeCheck();
    // PropertyFieldでGUI表示
    EditorGUILayout.PropertyField(gradientProperty);
    // 変更があったらApplyして変更を適用する必要がある 
    if (EditorGUI.EndChangeCheck())
    {
        serializedGradientData.ApplyModifiedProperties();
    }
}