Studio の拡張
このページは自動翻訳されており、誤りが含まれる場合があります。誤りを見つけた場合は「このページを編集」リンクからご協力ください。
Turian Studio は、拡張されるために作られたプラットフォーム Gaya のプラグインです。プロジェクトのスクリプトからも Studio を拡張できます — 属性を使い、エディターのアセンブリを一切参照せずに。以下のものはすべて、スクリプトのコンパイル時に検出され、再コンパイルのたびに更新されます。
メニュー項目
[MenuItem] を付けた public static メソッドはメニューコマンドになります。パスの最初のセグメントがメニューを選びます。File、Edit、View、Project、Help は Studio 自身のメニューに入り、それ以外は新しいメニューを作ります:
namespace Usercode;
public static class LevelTools
{
[MenuItem("Tools/Count Scene Files")]
public static void CountScenes() =>
Log.Logger.LogInformation("{Count} 個のシーン", Directory.GetFiles("Assets", "*.prefab", SearchOption.AllDirectories).Length);
}
メソッドは引数なし、または 1 つ(IServiceProvider、または Studio が解決できる任意のサービス)を取ります。メニュー項目はコマンドパレットにも表示され、そこでショートカットを割り当てられます。
パネル
[Panel] を付けたプレーンなクラスはドッキング可能なパネルになります。public メンバーはフォームとして、[Button] メソッドはボタンとして描画されます:
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} 体", Note, Enemies);
}
2 番目の引数はそれを開くメニューパスです(既定は Window/<名前>)。
設定ページ
[EditorSetting] を付けたクラスは File → Settings… のページになり、その値は保存・復元されます:
[EditorSetting("My Tools/Level Export", Description = "レベルファイルの書き出し方法。")]
public sealed class LevelExportSettings
{
[EditorSetting("Compress", Description = "圧縮したレベルファイルを書き出します。")]
public bool Compress { get; set; } = true;
public string OutputFolder { get; set; } = "Exports";
}
その他の拡張ポイント
| 属性 | 追加するもの | 参照 |
|---|---|---|
[CustomGizmo(drawer, component)] |
コンポーネントの Scene ビュー描画 | ギズモ |
[AssetPreview(assetType)] |
アセットタイプの Inspector プレビュー | アセットプレビュー |
[CreateAssetMenu(path)] |
データアセット用の Assets パネルの New 項目 | アセット |
[ComponentContextMenu(path)] |
Add Component 内でのコンポーネントの位置 | コンポーネント |
[Button]、[Range]、[ReadOnly]、[Hide]、… |
Inspector でのメンバーの見え方 | コンポーネント |
Gaya プラグイン
Studio のパネル、メニュー、コマンドは、それ自体が Gaya プラグイン(Gaya.Plugin.Turian)の提供するものです。1 つのプロジェクトに縛られないツール向けに別の Gaya プラグインを書く場合も、同じレジストリ(パネル、コマンド、メニュー、ショートカット、設定ページ、テーマ)を使います。