↓ Ir para o conteúdo principal
  1. Blog/

Como exibir um README na Unity ao abrir o projeto

·241 palavras·2 minutos
Bruno Cicanci
Autor
Bruno Cicanci
Desenvolvendo jogos profissionalmente desde 2010.

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.