ブループリント
ビジュアルプログラミング層——ブループリントとは何か、どこに宿るか、そして何を許されているか
ブループリントとは、ノードをエッジでつないだビジュアルプログラムであり、ゲームランタイムによって実行されます。プロジェクトはコードを書かずにブループリントで振る舞いを得ます——画面を開くボタン、セーブ一覧を表示するメニュー、続きがあるかどうかを知っているタイトル画面など。
スロットを埋める方法はブループリントだけではありません。スロットが持つのはレイヤーの並びで、そのうちの1枚をスクリプト——プロジェクトが所有し、Studio の外で編集する TypeScript のファイル——にできます。レイヤーはすべて動くので、同じスロットでスクリプトとグラフが隣り合います。ファイルの置き場所とスクリプトへの入り口はスクリプトにあります。

ノードを1つも置く前に、すべてのブループリントは3つの問いに答えます——誰がそれを所有するか、どんな種類のグラフか、そしてそれによってパレットがどのノードを提供するか。
オーナー
オーナーは、ブループリントがどこに宿るかを決めます。ブループリントの寿命と、それが何に到達できるかを決めるのもオーナーです。
| オーナー | 所属先 | 存続期間 |
|---|---|---|
globalMain | プロジェクト | アプリケーション |
surfaceMain | 1つの Surface | その Surface のインスタンス |
widgetMain | 1つのウィジェットインスタンス | そのウィジェットインスタンス |
widgetValue | 1つのウィジェットの1つのプロパティ | それを所有するバインディング |
componentWidgetMain | 再利用可能なコンポーネントウィジェット | コンポーネントの各インスタンス |
sharedAsset | 共有ブループリントアセット | それをインポートするもの |
storyAction | action、value、condition いずれかのモードの1つのストーリーブループリント | それを呼び出す行 |
widgetMain ブループリントは、Element 入力を取らない Self ノードを通じて自分自身のウィジェットに作用します。別のウィジェットに作用させるには、Element 参照を Element ノードに接続します。この区別はノードカタログ全体を貫いており、パレットについて最初に理解すべきことです。
グラフの種類
すべてのグラフはグラフの種類を宣言します。この種類はラベルではなく、ルールの集合です。
| 種類 | 副作用のあるノード | エントリーノード | ウィジェット UI からバインド可能か |
|---|---|---|---|
event | 可 | イベントヘッド(Init、On Click など)。必須ではない | はい |
function | 不可 | Function Entry。必須 | いいえ |
macro | 可 | 不要 | いいえ |
latent(グラフの実行を一時停止させるもの)ノード——Delay や一度のセーブ書き込みなど——は function グラフには置けません。function は呼び出し元に同期的に値を返すため、保留中の結果を渡す先がありません。
Blueprint Value
Blueprint Value とは、1つのプロパティにバインドされた widgetValue ブループリントのことで、プロパティは直接記述する代わりに計算によって得られます。現在対応しているのは nl.text → props.text、nl.button → props.label、nl.frame → props.params、nl.slider → props.value です。
そのパレットは意図的に狭く絞られています——イベントヘッド、latent でないフロー、純粋な Data と Math、ローカル変数へのアクセス、Element リテラル、そして純粋な読み取りだけです。書き換えも、ナビゲーションも、持続変数も、latent ノードもありません。世界を変えられる値プロバイダーは、世界が変わった瞬間に自分自身へ再入してしまうからです。
エディタのキャンバスはレイアウトツールです。値バインディングをプレビューできる程度にはブループリントを解決しますが、ゲームは実行しません——実行中のプレイスルーを必要とするノードには、そこで対話する相手がありません。ブループリントの挙動は Dev Mode で確認してください。
次へ
組み込みノードの代わりに自作のノードを配布するには、プラグイン API の blueprintNodes を参照してください。