Day Two

A bit of a shorter day, today, in which I spent an hour trying to get a custom editor displaying, only to find out that… The editor was targeting something from Unity’s Visual Scripting, rather than my own class 🫠

I’m extending Unity’s Button class, which has a bunch of useful custom editor code that controls how the navigation system chooses which item to select next, plus some transitions which I usually ignore and implement myself. However, because those buttons already have a custom editor, it doesn’t show any new properties I add! Which means I have to go in and add them myself, like so:

[CustomEditor(typeof(UI.TabButton))]
public class TabButtonEditor : ButtonEditor
{
    private SerializedProperty _text;
    private SerializedProperty _display;
    private SerializedProperty _selectedFontSize;
    private SerializedProperty _selectedCharacterSpacing;
    private SerializedProperty _duration;
    private SerializedProperty _ease;
    private SerializedProperty _onSelected;
    private SerializedProperty _onGroupChange;

    protected override void OnEnable()
    {
        base.OnEnable();
        _text = serializedObject.FindProperty("text");
        _display = serializedObject.FindProperty("display");
        _selectedFontSize = serializedObject.FindProperty("selectedFontSize");
        _selectedCharacterSpacing = serializedObject.FindProperty("selectedCharacterSpacing");
        _duration = serializedObject.FindProperty("duration");
        _ease = serializedObject.FindProperty("ease");
        _onSelected = serializedObject.FindProperty("onSelected");
        _onGroupChange = serializedObject.FindProperty("onGroupChange");
    }

    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        serializedObject.Update();
        EditorGUILayout.PropertyField(_text);
        EditorGUILayout.PropertyField(_display);
        EditorGUILayout.PropertyField(_selectedFontSize);
        EditorGUILayout.PropertyField(_selectedCharacterSpacing);
        EditorGUILayout.PropertyField(_duration);
        EditorGUILayout.PropertyField(_ease);
        EditorGUILayout.PropertyField(_onSelected);
        EditorGUILayout.PropertyField(_onGroupChange);
        serializedObject.ApplyModifiedProperties();
    }
}

Now that’s working, the new tabbed navigation for the options menu is completely up and running, and… My 1 year old son gave me the gift of an awful cold - so I’m going to go have a nap!

What’s next?

Sleep for the next three days? I wish… Next I’ll be sorting more accessibility options - namely fixing the game speed slider, adding sliders for changing the intensity of individual game elements, adding remappable controls, and adding a way to change the background colour. That won’t all happen tomorrow, but it’s my aim to have it sorted by the weekend!


I hope you enjoyed reading about my Polyfury progress. If you have any questions or thoughts, please feel free to leave a comment below. Thanks for reading, and maybe check out the demo:

Making your own games? Check out Artificer Pro - released this month!

Previous
Previous

Day Three

Next
Next

Day One