Como exibir um README na Unity ao abrir o projeto

Como exibir um README na Unity ao abrir o projeto

Uma forma interessante de exibir uma mensagem de boas vindas ou informações sobre o projeto ao ser carregado é exibir um conteúdo similar à um arquivo README que pode ser customizado e exibido na janela do inspector dentro do editor da Unity. Neste vídeo eu mostro como criar um ScriptableObject, alterar sua visualização utilizando um CustomEditor e, por fim, colocar o foco do projeto e do inspector neste arquivo ao carregar o projeto na Unity.

Abaixo estão os códigos das duas classes criadas no vídeo como referência, Readme e ReadEditor, respectivamente.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(fileName = "Readme", menuName = "Create Readme")]
public class Readme : ScriptableObject
{
    public string Title;
    public List<string> Sections = new List<string>();
}
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Readme))]
[InitializeOnLoad]
public class ReadmeEditor : Editor
{
    static ReadmeEditor()
    {
        EditorApplication.delayCall += SelectReadme;
    }

    static void SelectReadme()
    {
        EditorApplication.delayCall -= SelectReadme;

        var readmeObject = Resources.Load<Readme>("Readme");
        if (readmeObject != null)
        {
            EditorUtility.FocusProjectWindow();
            Selection.activeObject = readmeObject;
        }
    }

    protected override void OnHeaderGUI()
    {
        Readme readme = (Readme)target;

        GUILayout.BeginHorizontal();

        var style = GUI.skin.GetStyle("label");
        style.fontSize = 32;
        GUILayout.Label(readme.Title, style);

        GUILayout.EndHorizontal();
    }

    public override void OnInspectorGUI()
    {
        Readme readme = (Readme)target;

        foreach(string section in readme.Sections)
        {
            var style = GUI.skin.GetStyle("label");
            style.fontSize = 18;
            style.wordWrap = true;
            GUILayout.Label(section, style);

            GUILayout.Space(18);
        }
    }
}

Veja a playlist do canal com mais vídeos sobre Unity clicando aqui.

Dúvidas, comentários ou sugestões para futuros vídeos deixem aqui no post ou lá no vídeo no YouTube.

comments powered by Disqus