NarraLeaf
ブループリント

ブループリント

ビジュアルプログラミング層——ブループリントとは何か、どこに宿るか、そして何を許されているか

ブループリントとは、ノードをエッジでつないだビジュアルプログラムであり、ゲームランタイムによって実行されます。プロジェクトはコードを書かずにブループリントで振る舞いを得ます——画面を開くボタン、セーブ一覧を表示するメニュー、続きがあるかどうかを知っているタイトル画面など。

スロットを埋める方法はブループリントだけではありません。スロットが持つのはレイヤーの並びで、そのうちの1枚をスクリプト——プロジェクトが所有し、Studio の外で編集する TypeScript のファイル——にできます。レイヤーはすべて動くので、同じスロットでスクリプトとグラフが隣り合います。ファイルの置き場所とスクリプトへの入り口はスクリプトにあります。

エディタで開いた App logic のブループリント。2つのノードがエッジで結ばれ、そのグラフのレイヤーと変数がそばに並んでいる

ノードを1つも置く前に、すべてのブループリントは1つの問いに答えます。誰がそれを所有するか、です。その答えによって、パレットがどのノードを提供するかが決まります。

オーナー

オーナーは、ブループリントがどこに宿るかを決めます。ブループリントの寿命と、それが何に到達できるかを決めるのもオーナーです。

オーナー所属先存続期間
globalMainプロジェクト。UI パネルでは App logic(アプリロジック)と表示。以前のバージョンではグローバルブループリントと呼ばれていたアプリケーション
surfaceMain1つの Surfaceその Surface のインスタンス
widgetMain1つのウィジェットインスタンスそのウィジェットインスタンス
widgetValue1つのウィジェットの1つのプロパティそれを所有するバインディング
componentWidgetMain再利用可能なコンポーネントウィジェットコンポーネントの各インスタンス
storyActionaction、value、condition いずれかのモードの1つのストーリーブループリントそれを呼び出す行

widgetMain ブループリントは、Element 入力を取らない Self ノードを通じて自分自身のウィジェットに作用します。別のウィジェットに作用させるには、Element 参照を Element ノードに接続します。この区別はノードカタログ全体を貫いており、パレットについて最初に理解すべきことです。

Blueprint Value

Blueprint Value とは、1つのプロパティにバインドされた widgetValue ブループリントのことで、プロパティは直接記述する代わりに計算によって得られます。現在対応しているのは nl.text → props.text、nl.button → props.label、nl.image → props.imageFill.assetId、nl.switch → props.checked、nl.frame → props.params、nl.slider → props.value です。

そのパレットは意図的に狭く絞られています。含まれるのは、Init と On Flush のイベントヘッド、latent でないフロー、純粋な Data と Math、ローカル変数へのアクセス、Element リテラル、そして純粋な読み取りだけです。書き換えも、ナビゲーションも、永続変数もなく、Call Fn 以外の latent ノード(グラフの実行を一時停止させるもの。Delay や一度のセーブ書き込みなど)もありません。世界を変えられる値プロバイダーは、世界が変わった瞬間に自分自身へ再入してしまうからです。

プレイヤーの言語で文字を表示するには、Translation Key Text で翻訳キーの文字を取り、Format で値を差し込みます。プレイヤーの言語を読む Blueprint Value は、プレイヤーが言語を切り替えると更新されます。Translation Key Text や言語ごとのアセットで読む場合も、呼び出す関数の中の Get Text、Get Current Language、Get Save Metadata で読む場合も同じです。

Text の内容や Button のラベルをバインドしている間、ウィジェット自身の文字はサンプルテキストです。エディタでのみ表示され、ビルドしたゲームには含まれず、翻訳の対象にもなりません。インターフェースのテキスト を参照してください。

エディタのキャンバスはレイアウトツールです。値バインディングをプレビューできる程度にはブループリントを解決しますが、ゲームは実行しません——実行中のプレイスルーを必要とするノードには、そこで対話する相手がありません。ブループリントの挙動は Dev Mode で確認してください。

次へ

組み込みノードの代わりに自作のノードを配布するには、プラグイン API の blueprintNodes を参照してください。

このページの目次