Estendendo o Studio

Esta página foi traduzida automaticamente e pode conter erros. Encontrou um problema? Use o link "Edit this page" para ajudar a corrigir.

O Turian Studio é um plugin da Gaya, uma plataforma feita para ser estendida. Os scripts do seu projeto também podem estender o Studio — com atributos, sem referenciar nenhum assembly do editor. Tudo abaixo é detectado quando seus scripts compilam e atualizado a cada recompilação.

Itens de menu

Um método public static com [MenuItem] vira um comando de menu. O primeiro segmento do caminho escolhe o menu; File, Edit, View, Project e Help caem nos menus do próprio Studio, e qualquer outro cria um menu novo:

namespace Usercode;

public static class LevelTools
{
    [MenuItem("Tools/Count Scene Files")]
    public static void CountScenes() =>
        Log.Logger.LogInformation("{Count} cenas", Directory.GetFiles("Assets", "*.prefab", SearchOption.AllDirectories).Length);
}

O método não recebe parâmetros, ou recebe um: um IServiceProvider, ou qualquer serviço que o Studio consiga resolver. Os itens de menu também aparecem na paleta de comandos, onde você pode lhes dar um atalho.

Painéis

Uma classe simples com [Panel] vira um painel encaixável. Seus membros públicos são desenhados como um formulário, e os métodos [Button] como botões:

namespace Usercode;

[Panel("Level Stats", "Tools/Level Stats")]
public sealed class LevelStatsPanel
{
    public string Note { get; set; } = "";
    public int Enemies { get; set; }

    [Button]
    public void Report() => Log.Logger.LogInformation("{Note}: {Enemies} inimigos", Note, Enemies);
}

O segundo argumento é o caminho de menu que o abre (o padrão é Window/<nome>).

Páginas de configuração

Uma classe com [EditorSetting] vira uma página em File → Settings…; seus valores são salvos e restaurados:

[EditorSetting("My Tools/Level Export", Description = "Como os arquivos de fase são exportados.")]
public sealed class LevelExportSettings
{
    [EditorSetting("Compress", Description = "Grava arquivos de fase comprimidos.")]
    public bool Compress { get; set; } = true;

    public string OutputFolder { get; set; } = "Exports";
}

Mais pontos de extensão

Atributo Adiciona Veja
[CustomGizmo(desenhista, componente)] Desenho na visualização Scene para um componente Gizmos
[AssetPreview(tipoDeAsset)] Pré-visualizações no Inspector para um tipo de asset Pré-visualização de assets
[CreateAssetMenu(caminho)] Uma entrada New no painel Assets para um data asset Assets
[ComponentContextMenu(caminho)] A posição de um componente em Add Component Componentes
[Button], [Range], [ReadOnly], [HideInEditor], … Como os membros aparecem no Inspector Componentes

Plugins Gaya

Os painéis, menus e comandos do Studio são contribuições de um plugin Gaya (Gaya.Plugin.Turian). Escrever um plugin Gaya separado — para ferramentas que não pertencem a um projeto — usa os mesmos registros: painéis, comandos, menus, atalhos, páginas de configuração e temas.


← Toda a documentação Editar esta página