エディターとの通信
ランタイムとエディター間の通信はすべて、ContextシングルトンオブジェクトからアクセスできるServiceクラスを介して行います。たとえば、エディターにポップアップメッセージを表示するには、次のコードを使用します。
Context.Service.PromptMessage("Hey!", "I'm a message!");
よく使用されるメソッドを以下に示します。
void BroadcastOpenedScene(): シーン全体をエディターに送信します。プログラムからシーンにアセットやブループリントを追加・削除した場合にだけ必要です。void Toast(ToastSeverity severity, string header, string summary, string message = null, TimeSpan duration = default): エディターにトーストメッセージを表示します。messageがnullでない場合、ユーザーはトーストをクリックしてメッセージ全体を確認できます。void PromptMessage(string header, string message, bool markdown = false): エディターにポップアップメッセージを表示します。markdownがtrueの場合、メッセージはMarkdownテキストとしてレンダリングされます。UniTask<bool> PromptConfirmation(string header, string message): エディターに確認ダイアログを表示します。ユーザーが"OK"をクリックした場合はtrue、"Cancel"をクリックした場合はfalseを返します。UniTask<T> PromptStructuredDataInput<T>(string header, T structuredData = null): エディターに構造化データ入力ダイアログを表示します。structuredDataオブジェクトを渡すと、ダイアログにはそのデータがあらかじめ入力されます。ユーザーが"OK"をクリックした後に構造化データオブジェクトを返し、"Cancel"をクリックした場合はnullを返します。UniTask<T> PromptStructuredDataInput<T>(string header, Action<T> structuredDataInitializer): 上記と同様ですが、structuredDataInitializer関数を呼び出して構造化データオブジェクトを初期化します。void ShowProgress(string message, float progress, TimeSpan timeout = default): エディターに進行状況バーを表示します。progressの値は0から1の範囲で指定します。timeoutを指定した場合、進行状況バーは指定した時間の経過後に自動的に非表示になります。void HideProgress(): 進行状況バーを非表示にします。void NavigateToGraph(Guid graphId, Guid nodeId = default): エディターで指定したグラフに移動します。nodeIdを指定した場合、エディターはグラフ内の指定したノードを選択します。void NavigateToPlugin(string pluginId, string port = default): エディターで指定したプラグインに移動します。portを指定した場合、エディターはプラグインの指定したポートに移動します。
ヒント
エディターが閉じている場合でも、ランタイムではContext.Serviceを常に利用できると考えて問題ありません。