NarraLeaf

データ

リテラル、型変換、型判定、そしてグラフを組み立てるためのあらゆる文字列・配列・オブジェクト・JSON 操作

Data は、ブループリントが計算に使う値を保持するカテゴリです。定数が必要なとき、値が想定と違う型で届いたとき、あるいは文字列・配列・JSON ドキュメントを分解する必要があるときに使います。ここにあるノードのほとんどは実行ピンを持ちません——Data ノードは、その出力に配線された側から読み取られます。Memoだけが例外であり、それについてはこのページの末尾で説明します。

値の型

以下のピンには次の型が現れます。カード、型の選択、変数、メッセージにはインターフェース上の名前が表示されます。括弧内は型 ID で、ドキュメントのピン表、コマンドラインツール、プロジェクトのファイルではこちらで書かれます。

型内容生成元
文字列(string)テキスト。String、およびすべての文字列ノード。
整数(integer)小数部のない数。Integer、および各種の長さ・添字・件数。
数値(float)小数を含みうる数。Float、To Float、Parse Float。
真偽値(boolean)真または偽。Boolean、およびすべての型判定と文字列判定。
JSON(json)任意の JSON 値——object、array、string、number、boolean、nullのいずれか。JSON、Parse JSON、Get JSON Field、Make Object。
リスト(array)JSON 配列。ただし独立した型として扱われます。Make Array、配列を返すArray …ノード群、Object Values。
型のリスト(array<T>)要素がすべて型Tである配列。カードではその型のリストとして表示されます(Ending list(エンディングのリスト)、string list(文字列のリスト)など)。Get Endings、Get History、Split、Object Keys、Array Range。
構造体の名前(struct:<id>)フィールドが宣言されたオブジェクト。エンディングやセーブの項目など。カードには構造体の名前が表示されます(Ending(エンディング)など)。構造体を参照してください。エンディングに対するArray First、List のItem Click、エンディングを反復するFor Each。
任意の値(any)何であってもよい値。Memo、およびカードで選んだものに応じて型が決まるピン(Get Field、Get Varなど)。選ぶ前はanyです。
色(RGBAColor){ r, g, b, a }。Color。
2 次元ベクトル(Vector2D){ x, y }。Vector2D、Make Vector2D、Rect Center、Get Center。
矩形(Rect){ x, y, width, height }。Rect、Make Rect、Get Bounds、Get Measured Rect。

他のカテゴリのピンには次の型も現れます。

型内容参照
要素(element)、ボタンの要素(element:nl.button)などインターフェース上の 1 つの要素。ウィジェットの種類が決まっている場合は「ウィジェット名の要素」と表示されます。Element
画像(ImageAsset、ImageAsset|null)1 つの画像アセット。null 許容の形は空にもなります。Image
タイマー(Timer)Delayが返すトークン。Flow
アニメーション(AnimationToken)Animate Propertyが返すトークン。Displayable
サウンド(SoundHandle)Play Soundが再生しているクリップ。Sound
レスポンス(ResponseBody)Fetchが取得したレスポンス。Network
セーブ枠(SaveSlot)1 つのセーブ。Game

2つのデータピン間の接続は、型が完全に一致する場合、または次のいずれかが成り立つ場合に許可されます。

元先理由
integerfloatすべての整数は浮動小数点数です。
integer、floatstring入力を読み取る際に、数値はテキストへ変換されます。これは値を書き換える唯一の暗黙変換です——それ以外の許可された接続はすべて値をそのまま通します。
arrayjson配列は JSON 値そのものです。
array<T>array、json要素の型がわかっている配列も配列です。
array<T>array<U>TがUに接続できる場合。
struct:<id>json構造体は JSON オブジェクトです。
struct:<id>別の構造体両方のフィールドが同じ名前・同じ順序・同じ型の場合。
Rectjson構造化された値についての規則ではなく、移行のために許されている経路です——下記参照。
any任意の型anyはどちらの方向にも一致します。
任意の型any

他のカテゴリの型も同じ形でのみ広がります——elementはどのelement:nl.…ピンにも接続でき、その逆方向にも接続できます。element系のピンはanyとはどちらの方向にも接続できません。ImageAssetとstringはどちらもImageAsset|null入力に届きます。

それ以外はすべて拒否されます。作者が動くはずだと思い込みがちな逆方向の接続も含めてです。

  • json → array、json → Rect。 どの拡張規則も一方向にしか成り立ちません。任意のオブジェクトが矩形であるとは限りません。
  • json → 構造体。 フィールドが宣言されていないオブジェクト(Parse JSONの結果など)はGet Fieldに接続できません。Get JSON Fieldで読み取ってください。
  • float → integer。 To Integerを挟んでください。これはゼロ方向に切り捨てます。
  • string → integerまたはfloat。 Parse Int、Parse Float、To Integer、To Floatのいずれかを挟んでください。
  • boolean → string、json → string。 テキストへ暗黙変換されるのは数値だけです。To StringまたはStringify JSONを挟んでください。
  • string、integer、float、boolean → json。 json入力に暗黙に届く型はarrayとRectだけです。To JSONを挟んでください。
  • RGBAColor → json、Vector2D → json。 これらはそれぞれ独立した構造化型であり、JSON ドキュメントではありません。Break Vector2Dで分解するか、Make Objectでドキュメントを組み立ててください。

Rect → jsonは、Rectが独立した型になる前に書かれたグラフのために存在します。Rectが型になるまでは、RectリテラルとGet Boundsはどちらもjsonを公開していました。そのため当時作成された矩形は今もGet JSON Fieldへ渡せて動作し続けます。Vector2Dはjsonピンであったことが一度もなく、狭いままです。

arrayはjson入力に渡せるが、逆方向は決してできません。たまたま配列を保持しているjsonの値(Parse JSON、Get JSON Field)は、Array Lengthや List のSet List Contentのようなarray入力には接続できません。FlowのFor Eachはjsonを受け取るため、それを使った反復は引き続き機能します。Array …ノード群はそうはいきません。

array<T>と構造体の型は、どのピンが接続できるか、カードに何が表示されるかを決めるもので、値そのものは変えません。ゲームの実行中、エンディングは同じオブジェクトのままです。以前のバージョンのグラフで成り立っていた接続は、引き続き成り立ちます。

規約

  • このページのノードは、1つを除いてすべて純粋です。 接続できる実行ピンがないため、Data ノードは実行経路の上に置くことができません。その出力は、消費側が読み取るときに計算され、次の読み取りで再計算されます。Memoは例外です——値をそのまま保持することは、純粋なノードにはできないことそのものであるため、これは実行ノードになっています。
  • Blueprint Value グラフはこれらをすべて受け付けます。Memoも含まれます。
  • インプレースでの変更は存在しません。 書き込みを行うノードは、出力ピンに新しい値を返し、入力にはまったく手を加えません。
  • カード上のリテラルが存在するのはstring、integer、float、booleanのピンだけです。 jsonまたはarrayの入力にはカード上のエディタが存在しません——JSONリテラル、またはMake Object / Make Arrayノードを渡してください。
  • 未配線の入力はエラーではありません。 そのピンのカード上のリテラルを読み取り、リテラルがなければ何も読み取りません。そして各ノードはそれを正規化します——欠けた配列は空として、欠けた文字列は""として、欠けた数値は0として読み取られます。
  • 純粋なノードの連鎖は、最大32段まで解決されます。 それを超えると、読み取りは何も返さず、静かに終わります。
  • 一部のノードは同じ種類のノードとしてまとめられます。 パレットを一覧するとき、次の組はそれぞれ 1 行で表示されます:リテラルのStringからRectまで(Literal(リテラル))、変換のTo StringからTo JSONまで(Convert Type(型を変換))、型判定のIs StringからIs Nullまで(Check Type(型を調べる))、Trim、Trim Start、Trim End(Trim Whitespace(空白を取り除く))、To Upper Case、To Lower Case、Capitalize(Change Case(大文字・小文字を変える))、Replace、Replace All(Replace Text(文字列を置換))、Pad Start、Pad End(Pad Text(文字で埋める))。検索すると各ノードが自分の名前で表示されます。配置したカードは、タイトルの横の ▾ で同じ種類の別のノードに切り替えられます。同じ種類のノードを参照してください。

Array Push、Set JSON Field、Remove JSON Field、そしてこのページの他のすべての書き込みノードは、新しい値を返し、入力にはまったく手を加えません。Get Var → Array Pushと配線しただけでは何も変わりません——結果をSet Varへ配線し直す必要があります。Variablesを参照してください。

リテラル

リテラルは1つの出力ピンと1つのカード上のフィールドを持ちます。その型は選んだノードによって固定され、それによってグラフの残りの部分が型チェックできるようになります。

String

blueprint.data.stringLiteral · Pure

ピン方向型備考
valueout · datastring

カード上のフィールド

フィールド内容
valueテキスト。

Integer

blueprint.data.integerLiteral · Pure

ピン方向型備考
valueout · datainteger

カード上のフィールド

フィールド内容
value数値。読み取り時に整数へ切り捨てられます。

Float

blueprint.data.floatLiteral · Pure

ピン方向型備考
valueout · datafloat

カード上のフィールド

フィールド内容
value数値。有限でない値は0として読み取られます。

Boolean

blueprint.data.booleanLiteral · Pure

ピン方向型備考
valueout · databoolean

カード上のフィールド

フィールド内容
valueTrue / False のドロップダウン。

Null

blueprint.data.nullLiteral · Pure

カード上のフィールドを持たない唯一のリテラルです——nullについて設定できることは何もありません。その出力の型はjsonであるため、あらゆるjsonまたはanyの入力に届きます。

ピン方向型備考
valueout · datajson常にnull。

JSON

blueprint.data.jsonLiteral · Pure

カードにはルートの型と概要が表示されます。編集を開始すると、オブジェクトには名前付きフィールド、配列には順序付きの項目を持つツリー形式のフォームが開きます。新規ノードは空のオブジェクトから始まります。

ピン方向型備考
valueout · datajson

カード上のフィールド

フィールド内容
valueドキュメント。ツリーとして編集します。書き込まれる内容はすべて JSON セーフです。

Color

blueprint.data.colorLiteral · Pure

カラーピッカーで編集し、8桁の RGBA 16進数として表示されます。出力は常に正規化された{ r, g, b, a }のレコードです——r、g、bはバイト値、aは0から1。

ピン方向型備考
valueout · dataRGBAColor

カード上のフィールド

フィールド内容
valueカラーピッカー。

Vector2D

blueprint.data.vector2dLiteral · Pure

ピン方向型備考
valueout · dataVector2D

カード上のフィールド

フィールド内容
value固定されたx / yの数値スキーマ。余分なフィールドは拒否され、欠けているフィールドや数値でないフィールドは0として読み取られます。

Rect

blueprint.data.rectLiteral · Pure

ColorやVector2Dと同様に、Rectもそれ自身の型です。それらと異なり、Rectはjsonにも広がるため、あらゆるjson入力に接続できます——理由については値の型の注記を参照してください。

ピン方向型備考
valueout · dataRect

カード上のフィールド

フィールド内容
value固定されたx / y / width / heightの数値スキーマ。Vector2Dと同じ方法で検証されます。

Number

blueprint.data.numberLiteral · Pure

旧式の数値定数であり、新しいグラフに追加できないようパレットから非表示になっています。旧いグラフの解決を保つために登録だけは残されています。新規にはFloatを使ってください。

ピン方向型備考
valueout · datafloat

カード上のフィールド

フィールド内容
value数値。

Literal

blueprint.data.literal · Pure

旧式の型なし定数であり、これもパレットから非表示になっています。そのany型の出力はあらゆるものと型チェックを通ってしまいます——それこそが、型付きのリテラル群がこれを置き換えた理由です。

ピン方向型備考
valueout · dataany

カード上のフィールド

フィールド内容
value型のない値。

変換

これらは、接続ルールがあなたを導く先のノード群です。どれも失敗しません——読み取れない入力は、エラーではなくその型のゼロ値を生成します。

To String

blueprint.string.toString · Pure

nullと未配線の入力はどちらも""として読み取られます。オブジェクトや配列は JSON テキストにシリアライズされます。

ピン方向型備考
valuein · dataany
resultout · datastring

To Integer

blueprint.data.toInteger · Pure

ゼロ方向に切り捨てます——-2.7は-3ではなく-2になります。trueは1、falseは0として読み取られ、数値の文字列は受け付けられます。それ以外はすべて0になります。

ピン方向型備考
valuein · dataany
resultout · datainteger

To Float

blueprint.data.toFloat · Pure

To Integerと同じ受け付け方ですが、切り捨ては行いません。有限の数値でない値は0になります。

ピン方向型備考
valuein · dataany
resultout · datafloat

To Boolean

blueprint.data.toBoolean · Pure

文字列はトリムして小文字化したうえで照合されます——""、"false"、"0"、"no"は偽、"true"、"1"、"yes"は真であり、それ以外の空でない文字列はすべて真になります。0と有限でない数値は偽になります。

ピン方向型備考
valuein · dataany
resultout · databoolean

To JSON

blueprint.data.toJson · Pure

文字列は JSON としてパースされ、パースできなければ元の文字列のまま保たれます——そのためこのノードがテキストを壊すことはありません。それ以外の値は JSON セーフな形にされます——有限でない数値や循環参照はnullに、関数やシンボルはそのテキスト形式になります。

ピン方向型備考
valuein · dataany
resultout · datajson

Parse Int

blueprint.data.parseInt · Pure

10進数として扱われ、先頭の数値部分が採用されます——"12px"は12になります。数字がまったくない場合は0になります。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datainteger

Parse Float

blueprint.data.parseFloat · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datafloat

Parse JSON

blueprint.data.parseJson · Pure

厳密です——パースできないテキストと空文字列は、どちらもnullになります。元のテキストを残したいときは代わりにTo JSONを使ってください。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datajson

Stringify JSON

blueprint.data.stringifyJson · Pure

未配線の入力はテキスト"null"になります。シリアライズできない値は""になります。

ピン方向型備考
valuein · datajson
resultout · datastring

型判定

それぞれがanyを受け取り、実際に届いた値についての問いに答えます——これが、jsonやanyのピンが本当は何を運んでいるかを知る方法です。

Is String

blueprint.data.isString · Pure

ピン方向型備考
valuein · dataany
resultout · databoolean

Is Number

blueprint.data.isNumber · Pure

有限の数値だけが対象です——NaNと無限大は偽であり、数値の文字列も偽になります。これは型について尋ねるものであり、パース可能かどうかについてではありません。

ピン方向型備考
valuein · dataany
resultout · databoolean

Is Boolean

blueprint.data.isBoolean · Pure

ピン方向型備考
valuein · dataany
resultout · databoolean

Is Array

blueprint.data.isArray · Pure

ピン方向型備考
valuein · dataany
resultout · databoolean

Is Object

blueprint.data.isObject · Pure

配列ではない、nullでないオブジェクトに対して真になります。配列に答えるのはこれではなくIs Arrayです。

ピン方向型備考
valuein · dataany
resultout · databoolean

Is Null

blueprint.data.isNull · Pure

nullに対して真になり、また何にも解決されなかった入力に対しても真になります——未配線のピンはここでは null として読み取られます。

ピン方向型備考
valuein · dataany
resultout · databoolean

Not Null

blueprint.data.notNull · Pure

Is Nullの否定であり、これによってNotをぶら下げる必要がなくなります。

ピン方向型備考
valuein · dataany
resultout · databoolean

Is Empty Value

blueprint.data.isEmptyValue · Pure

null、""、空の配列、空のオブジェクトに対して真になります。0とfalseは空ではなく値であり、どちらも偽になります。

ピン方向型備考
valuein · dataany
resultout · databoolean

文字列

ここでのすべてのvalue入力はカード上のリテラルを受け付けるため、一度きりの文字列のために専用のリテラルノードを用意する必要はありません。添字は0始まりであり、範囲外の添字は拒否されるのではなくクランプされます。

Concat

blueprint.string.concat · Pure

その入力を、ピンの順に、間に何も挟まずに連結します。カードには入力追加コントロールがあり、aとbを超えてさらにstring入力を追加できます。以下のシグネチャは、最初から存在する2つだけを示しています。

ピン方向型備考
ain · datastringカード上のリテラルを受け付けます。
bin · datastringカード上のリテラルを受け付けます。
resultout · datastring

Format

blueprint.string.format · Pure

テンプレート内の{name}を、valuesの対応するフィールドで置き換えます。valuesが配列の場合は{0}、{1}……で置き換えます。一致しないプレースホルダーは空になり、valuesがオブジェクトでも配列でもない場合はすべてのプレースホルダーが空になります。

Format はパレットにある唯一の整形ノードで、Blueprint Value と関数でも使えます。プレイヤーの言語のテンプレートを使うには、Translation Key Text を template に配線します。

ピン方向型備考
templatein · datastringカード上のリテラルを受け付けます。
valuesin · datajsonJSONリテラル、Make Object、または {0}、{1}……用のMake Arrayを配線してください。
resultout · datastring

Length

blueprint.string.length · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
lengthout · datainteger

Is Empty

blueprint.string.isEmpty · Pure

長さがゼロであることです。空白だけの文字列は空ではありません——それはIs Blankが扱います。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · databoolean

Is Blank

blueprint.string.isBlank · Pure

空である、または空白しか含みません。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · databoolean

Trim

blueprint.string.trim · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datastring

Trim Start

blueprint.string.trimStart · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datastring

Trim End

blueprint.string.trimEnd · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datastring

To Upper Case

blueprint.string.toUpperCase · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datastring

To Lower Case

blueprint.string.toLowerCase · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datastring

Capitalize

blueprint.string.capitalize · Pure

先頭の文字だけを大文字にし、それ以外はそのまま残します——タイトルケースではありません。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datastring

Equals

blueprint.string.equals · Pure

ピン方向型備考
ain · datastringカード上のリテラルを受け付けます。
bin · datastringカード上のリテラルを受け付けます。
resultout · databoolean

Equals Ignore Case

blueprint.string.equalsIgnoreCase · Pure

ピン方向型備考
ain · datastringカード上のリテラルを受け付けます。
bin · datastringカード上のリテラルを受け付けます。
resultout · databoolean

Contains

blueprint.string.contains · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
searchin · datastringカード上のリテラルを受け付けます。
resultout · databoolean

Starts With

blueprint.string.startsWith · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
searchin · datastringカード上のリテラルを受け付けます。
resultout · databoolean

Ends With

blueprint.string.endsWith · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
searchin · datastringカード上のリテラルを受け付けます。
resultout · databoolean

Index Of

blueprint.string.indexOf · Pure

startから前方へ検索し、一致がない場合は-1を返します。startは文字列の範囲内にクランプされるため、範囲外の値は失敗するのではなく先頭または末尾から検索されます。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
searchin · datastringカード上のリテラルを受け付けます。
startin · dataintegerカード上のリテラルを受け付けます。既定値は0。
indexout · datainteger

Last Index Of

blueprint.string.lastIndexOf · Pure

末尾から後方へ検索します。startピンは存在しません——それがIndex Ofとの唯一の非対称点です。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
searchin · datastringカード上のリテラルを受け付けます。
indexout · datainteger

Count

blueprint.string.count · Pure

重ならない出現回数を数えます。空のsearchは、文字列の長さではなく0になります。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
searchin · datastringカード上のリテラルを受け付けます。
countout · datainteger

Char At

blueprint.string.charAt · Pure

文字列の範囲外の添字は、エラーではなく""になります。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
indexin · dataintegerカード上のリテラルを受け付けます。
charout · datastring

Substring

blueprint.string.substring · Pure

2番目のピンは終了位置ではなく長さです。どちらも文字列の範囲内にクランプされ、未配線のlengthはstart以降のすべてを取ります。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
startin · dataintegerカード上のリテラルを受け付けます。
lengthin · dataintegerカード上のリテラルを受け付けます。
resultout · datastring

Insert

blueprint.string.insert · Pure

indexは文字列の範囲内にクランプされ、読み取れない添字は末尾に追加されます。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
indexin · dataintegerカード上のリテラルを受け付けます。
insertin · datastringカード上のリテラルを受け付けます。
resultout · datastring

Replace

blueprint.string.replace · Pure

最初の出現だけを置き換えます。空のsearchは、あらゆる位置に挿入するのではなく、値をそのまま返します。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
searchin · datastringカード上のリテラルを受け付けます。
replacementin · datastringカード上のリテラルを受け付けます。
resultout · datastring

Replace All

blueprint.string.replaceAll · Pure

すべての出現を置き換えます。searchはパターンではなく単なるテキストです——空のsearchは、この場合も値をそのまま返します。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
searchin · datastringカード上のリテラルを受け付けます。
replacementin · datastringカード上のリテラルを受け付けます。
resultout · datastring

Repeat

blueprint.string.repeat · Pure

countは0–10000にクランプされるため、暴走した数値が無制限な文字列を作ることはありません。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
countin · dataintegerカード上のリテラルを受け付けます。
resultout · datastring

Pad Start

blueprint.string.padStart · Pure

lengthは追加する文字数ではなく、目標となる合計の長さです。すでに十分な長さの文字列は変更されずに返ります。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
lengthin · dataintegerカード上のリテラルを受け付けます。
padin · datastringカード上のリテラルを受け付けます。
resultout · datastring

Pad End

blueprint.string.padEnd · Pure

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
lengthin · dataintegerカード上のリテラルを受け付けます。
padin · datastringカード上のリテラルを受け付けます。
resultout · datastring

Split

blueprint.string.split · Pure

結果は文字列の配列です。Array …ノード群にも、Join、For Each、その他のjson入力にも接続できます。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
separatorin · datastringカード上のリテラルを受け付けます。
resultout · dataarray<string>

Join

blueprint.string.join · Pure

arrayを受け取るArray Joinとは異なり、これはjsonを受け取ります。valuesが配列でない場合は""になります。

ピン方向型備考
valuesin · datajson
separatorin · datastringカード上のリテラルを受け付けます。
resultout · datastring

Matches Regex

blueprint.string.matchesRegex · Pure

patternは、区切り記号もフラグも付かない正規表現のソースそのものです。コンパイルできないパターンは、例外を投げるのではなくfalseになります。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
patternin · datastringカード上のリテラルを受け付けます。
resultout · databoolean

Extract Regex

blueprint.string.extractRegex · Pure

パターンにキャプチャグループがある場合はその最初のものを、なければマッチ全体を返します。マッチしない場合、またはコンパイルできないパターンの場合は""になります。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
patternin · datastringカード上のリテラルを受け付けます。
resultout · datastring

Normalize Line Breaks

blueprint.string.normalizeLineBreaks · Pure

\r\nおよび単独の\rを\nに書き換えます。これにより、どのプラットフォームから貼り付けたテキストでも、比較や分割が一貫して行えます。

ピン方向型備考
valuein · datastringカード上のリテラルを受け付けます。
resultout · datastring

配列

これらはすべて、array入力を配列として読み取り、配列でない場合は空の配列に置き換えます。そのため何も例外を投げません。書き込みを行うものはすべて、resultに新しい配列を返します。

要素の型がわかっている場合(Get Endingsが返すエンディングなど)、配列を返すノードは同じ型を返し、Array Get、Array First、Array Last、Array Find By Keyはその型の要素を1つ返します。エンディングにArray Filter By Keyを使うとエンディングが、Array Firstを使うとエンディングが1つ得られます。Array Concatはaの型になります。

Array Length

blueprint.collection.arrayLength · Pure

ピン方向型備考
arrayin · dataarray
lengthout · datainteger

Array Get

blueprint.collection.arrayGet · Pure

負の添字、または末尾を超える添字はnullになります。出力の型がjsonなのは、配列の要素が任意の JSON 値になりうるためです。要素の型がわかっている場合は、その型になります。

ピン方向型備考
arrayin · dataarray
indexin · dataintegerカード上のリテラルを受け付けます。
itemout · datajson

Array Set

blueprint.collection.arraySet · Pure

indexの位置に書き込み、新しい配列を返します。負の添字、または10000を超える添字は、入力をそのまま返します。末尾を超える添字は配列を拡張し、飛ばされたスロットは空のままになります。

ピン方向型備考
arrayin · dataarray
indexin · dataintegerカード上のリテラルを受け付けます。
itemin · dataany
resultout · dataarray

Array Push

blueprint.collection.arrayPush · Pure

末尾に追加します。

ピン方向型備考
arrayin · dataarray
itemin · dataany
resultout · dataarray

Array Insert

blueprint.collection.arrayInsert · Pure

indexは0から配列の長さまでにクランプされるため、範囲外の添字は失敗するのではなく末尾に追加されます。

ピン方向型備考
arrayin · dataarray
indexin · dataintegerカード上のリテラルを受け付けます。
itemin · dataany
resultout · dataarray

Array Remove

blueprint.collection.arrayRemove · Pure

itemと等しい最初の要素を削除します。比較はEqualと同じ方法で行われ、同じフィールドを持つ2つのオブジェクトは、たとえ別のオブジェクトであっても一致します。一致しない場合は入力をそのまま返します。

ピン方向型備考
arrayin · dataarray
itemin · dataany
resultout · dataarray

Array Remove At

blueprint.collection.arrayRemoveAt · Pure

1つの要素を削除し、空いた隙間を詰めます。範囲外の添字は入力をそのまま返します。

ピン方向型備考
arrayin · dataarray
indexin · dataintegerカード上のリテラルを受け付けます。
resultout · dataarray

Array Contains

blueprint.collection.arrayContains · Pure

itemと等しい要素があるとき true。比較はEqualと同じ方法で行われ、Array Removeと同じ規則です。

ピン方向型備考
arrayin · dataarray
itemin · dataany
resultout · databoolean

Array Slice

blueprint.collection.arraySlice · Pure

endは含まれません。両方の境界は配列の範囲内にクランプされ、未配線のendは末尾まで実行されます。

ピン方向型備考
arrayin · dataarray
startin · dataintegerカード上のリテラルを受け付けます。
endin · dataintegerカード上のリテラルを受け付けます。
resultout · dataarray

Array Join

blueprint.collection.arrayJoin · Pure

各要素をテキストに変換し——オブジェクトと配列は JSON になります——それらを連結します。文字列のJoinがjsonを受け取るのに対し、こちらはarrayを受け取ります。

ピン方向型備考
arrayin · dataarray
separatorin · datastringカード上のリテラルを受け付けます。
resultout · datastring

Array First

blueprint.collection.arrayFirst · Pure

ピン方向型備考
arrayin · dataarray
itemout · datajson空の配列の場合はnull。

Array Last

blueprint.collection.arrayLast · Pure

ピン方向型備考
arrayin · dataarray
itemout · datajson空の配列の場合はnull。

Array Is Empty

blueprint.collection.arrayIsEmpty · Pure

ピン方向型備考
arrayin · dataarray
resultout · databoolean

Array Index Of

blueprint.collection.arrayIndexOf · Pure

itemと等しい最初の要素の位置。Array Containsと同じ方法で値により比較します。一致しない場合は-1。

ピン方向型備考
arrayin · dataarray
itemin · dataany
indexout · datainteger

Array Concat

blueprint.collection.arrayConcat · Pure

aに続けてbを並べた、新しい配列。

ピン方向型備考
ain · dataarray
bin · dataarray
resultout · dataarray

Array Reverse

blueprint.collection.arrayReverse · Pure

ピン方向型備考
arrayin · dataarray
resultout · dataarray

Array Unique

blueprint.collection.arrayUnique · Pure

後から出てくる重複を捨て、それぞれ最初のものだけを残します。要素はEqualと同じ方法で比較されるため、同じフィールドを持つ2つのオブジェクトは1つとして扱われます。

ピン方向型備考
arrayin · dataarray
resultout · dataarray

Array Range

blueprint.collection.arrayRange · Pure

startから始まり、それぞれstepずつ進むcount個の数値。ページが何かをN個描画する必要があり、その数値自体がコンテンツになる場合に使う配列です。

ピン方向型備考
startin · dataintegerカード上のリテラルを受け付けます。既定値は0。
countin · dataintegerカード上のリテラルを受け付けます。0–10000にクランプされます。
stepin · dataintegerカード上のリテラルを受け付けます。既定値は1であり、stepが0の場合は1として読み取られます——そうしないと、範囲の形をしたstartのcount個のコピーになってしまうためです。
resultout · dataarray<integer>

Array Find By Key

blueprint.collection.arrayFind · Pure

keyフィールドがvalueと等しい最初の要素と、その位置。比較はEqualと同じ方法で行われます。

ピン方向型備考
arrayin · dataarray
keyin · datastringフィールド名。カード上のリテラルを受け付けます。要素の型がわかっている場合は、要素のフィールドを選ぶドロップダウンになります。
valuein · dataanykeyが指すフィールドの型になり、そのフィールドが文字列・数値・真偽値ならカード上のリテラルを受け付けます。
itemout · datajson一致しない場合はnull。配列の要素の型がわかっている場合は、その型の要素です。
indexout · datainteger一致しない場合は-1。

Array Filter By Key

blueprint.collection.arrayFilter · Pure

keyフィールドがvalueと等しいすべての要素を、元の順序のまま返します。比較はEqualと同じ方法で行われます。

ピン方向型備考
arrayin · dataarray
keyin · datastringカード上のリテラルを受け付けます。要素の型がわかっている場合は、要素のフィールドを選ぶドロップダウンになります。
valuein · dataanykeyが指すフィールドの型になり、そのフィールドが文字列・数値・真偽値ならカード上のリテラルを受け付けます。
resultout · dataarrayarrayと同じ型です。

Array Sort By Key

blueprint.collection.arraySort · Pure

レコードをそのフィールドの1つによって並べ替えます。この key ベースの3つのノードは、比較関数ではなくフィールド名を受け取ります——比較関数は関数値であり、レコードをそのフィールドの1つで並べ替えることこそが、実際にリストが必要としているものだからです。

数値は数値として比較され、真偽値はfalseがtrueより前になり、それ以外はすべてテキストとして、ランタイムが文字列を照合する方法で順序付けられます。フィールドが欠けている、nullである、または""である要素は、どちらの方向でも末尾に並びます。同順位は届いた順序を保ちます。空のkeyは配列をそのまま返します。

ピン方向型備考
arrayin · dataarray
keyin · datastringカード上のリテラルを受け付けます。要素の型がわかっている場合は、要素のフィールドを選ぶドロップダウンになります。
descendingin · databooleanカード上のリテラルを受け付けます。
resultout · dataarrayarrayと同じ型です。

JSON Array Length

blueprint.data.jsonArrayLength · Pure

Array Lengthの旧名であり、パレットからは非表示で、既存のグラフの解決を保つために残されています。配列でない値は0になります。新しいグラフではArray Lengthを使ってください。

ピン方向型備考
valuein · dataarray
lengthout · datainteger

構造体

構造体は、フィールドが宣言されたオブジェクトです。エンディング、履歴の項目、セーブの項目、ギャラリーの項目、List の行がこれにあたります。構造体を運ぶピンには、カード上に構造体の名前(Ending(エンディング)など)が表示され、構造体の配列を運ぶピンには Ending list(エンディングのリスト)と表示されます。Get Field(フィールドを取得)は、ドロップダウンで選んだフィールドを1つ読み取ります。

構造体フィールド返すノード
Ending(エンディング)endingId、name、sceneId、sceneName、isReachedGet Endings
History entry(履歴の項目)id、type、text、character、avatar、voice、voiceId、selected、isPendingGet History、Get Future History
Save entry(セーブの項目)id、slot、timestamp、createdAt、preview、line、speaker、metadataList Auto Saves
Notification(通知)id、messageGet Notifications
Language(言語)code、displayName、isSourceGet Available Languages
Voice language(ボイスの言語)code、displayNameGet Available Voice Languages
Choice(選択肢)text、index、disabled、voiceIdゲーム UI の選択肢リストの行
NVL line(NVL の行)index、nametag、isActiveゲーム UI の NVL リストの行
Confirm button(確認ボタン)id、text、index、disabledShow Confirmがページを開くときに渡すボタン

各フィールドの意味は、その構造体を返すノードの説明にあります。プラグインは自分のノードが返す構造体を宣言できます。Gallery プラグインの Gallery entry(ギャラリーの項目)がその例です。マニフェストを参照してください。List の行は Edit content(内容を編集)で設定した構造体を持ちます。上の表の構造体か、その List のために書いたフィールドです。リストを参照してください。

  • 型は接続をたどって伝わります。 配列ノードは要素の型を引き継ぎます。配列を参照してください。Flow のFor Eachは、反復する配列の要素を1つ返します。List ノードと項目のイベントヘッドは、その List の構造体の行を受け渡しします。Listを参照してください。
  • フィールドの型がピンの型になります。 文字列のフィールドはstring、数値はfloat、真偽値はboolean、画像はImageAsset|null、色はRGBAColor、JSON はjsonです。
  • 構造体からワイヤーを引き出す。 構造体を運ぶピンからワイヤーを引き出してキャンバスの空いた場所で離すと、ノード追加メニューが Fields(フィールド)のグループで開き、各フィールドを読み取る項目が並びます(Get isReached(isReached を取得)など)。構造体の配列を運ぶピンからは、各フィールドで絞り込み・並べ替え・検索する項目が並びます(Filter by isReached(isReached で絞り込み)など)。どの項目も、フィールドを選んだ状態のノードを追加し、そのピンに接続します。真偽値のフィールドで絞り込み・検索する場合、比較する値は True(真)になります。
  • 構造体にないフィールドは報告されます。 Get Fieldが構造体にないフィールドを指定している場合や、Array Filter By Key、Array Sort By Key、Array Find By Keyのkeyが要素のフィールドでない場合、キャンバスに警告が表示され、プロジェクトチェックが Field not in shape(存在しないフィールド、blueprint/field-missing)を報告します。このようなノードは何も読み取れません。Get Fieldは空の値になり、絞り込みは要素を1つも残さず、並べ替えは順序を変えません。List のフィールドを削除したあとや、キーを手で入力したときに起きます。構造体がわかっているノードだけが検査されます。

Get Field

blueprint.list.getItemField · Pure

構造体のフィールドを1つ読み取ります。構造体を Object(オブジェクト)に接続し、Field(フィールド)でフィールドを選びます。出力はそのフィールドの型になるため、エンディングのisReachedはそのままBranchに接続できます。

ピン方向型備考
objectin · datastruct:*任意の構造体。Struct(構造体)と表示されます。List の行の中では接続しなくてもかまいません。
valueout · dataany選んだフィールドの型になります。値にそのフィールドがない場合はnullです。

カード上のフィールド

フィールド内容
Field読み取るフィールド。Object に接続した構造体のフィールドから選びます。構造体にもうないフィールドは Missing field “…”(フィールド「…」が見つからない)として一覧に残ります。
  • 最初に接続した構造体が保持されます。 以降、Object はその構造体だけを受け付けます。接続を外しても同じです。別の構造体を読み取るには、Get Fieldをもう1つ追加してください。
  • List の行の中では、Object を接続しなくてもかまいません。 このとき、ノードは描画中の行を読み取り、カードには Object · Current row(オブジェクト · 現在の行)と表示されます。行を読み取れる場所は List にあるとおりです。List の項目テンプレート内のエレメントのブループリント、List 自身の項目のイベントヘッド、コンポーネントの定義です。
  • それ以外の場所で接続しない場合、何も読み取りません。 カードは Object が未接続であると報告します。構造体を保持したまま接続を外したGet Fieldも何も読み取らず、代わりに現在の行を読むこともありません。
  • フィールドが宣言されていないオブジェクトは接続できません。Get JSON Fieldで読み取ってください。

このノードは以前 Get Item Field(項目の値を取得)という名前で、List の行だけを読み取っていました。型 id は変わっていないため、既存のグラフはこのノードをそのまま保持し、行の中で接続されていないノードは以前どおり現在の行を読み取ります。

ジオメトリ

Vector2DとRectは JSON ドキュメントではなく構造化された型であるため、Get JSON Fieldではなく専用のノードで組み立てたり分解したりします。すべての入力は、数値でない値を0として読み取ります。

Make Vector2D

blueprint.data.makeVector2d · Pure

ピン方向型備考
xin · datafloatカード上のリテラルを受け付けます。
yin · datafloatカード上のリテラルを受け付けます。
valueout · dataVector2D

Vector2Dリテラルとは異なり、両方の成分を配線できます——これは、点を計算で求めるときにMove Mouse Toが必要とするものです。

Break Vector2D

blueprint.data.breakVector2d · Pure

ピン方向型備考
valuein · dataVector2D
xout · datafloat
yout · datafloat

Make Rect

blueprint.data.makeRect · Pure

ピン方向型備考
xin · datafloatカード上のリテラルを受け付けます。
yin · datafloatカード上のリテラルを受け付けます。
widthin · datafloatカード上のリテラルを受け付けます。
heightin · datafloatカード上のリテラルを受け付けます。
valueout · dataRect

負のwidthやheightは、そのまま保持されるのではなく正規化されます——原点が移動し、大きさは正の値になります。そのため、得られる矩形は実際に描いたとおりのものになります。

Break Rect

blueprint.data.breakRect · Pure

ピン方向型備考
valuein · dataRect
xout · datafloat
yout · datafloat
widthout · datafloat
heightout · datafloat

Rect Center

blueprint.data.rectCenter · Pure

矩形の4辺から等距離にある点。

ピン方向型備考
valuein · dataRect
centerout · dataVector2D

オブジェクト

Object Keys と Object Values はオブジェクトの最上位を読み取り、Object Merge は 2 つのオブジェクトを結合します。フィールドの書き込みや削除には、下の JSON の節にある Set JSON Field または Remove JSON Field を使います。これらはパスを受け取ります。オブジェクトでない入力は{}として読み取られます。

Object Keys

blueprint.collection.objectKeys · Pure

挿入順のフィールド名。配列やその他のオブジェクトでない値は、空の配列になります。

ピン方向型備考
objectin · datajson
resultout · dataarray<string>

Object Values

blueprint.collection.objectValues · Pure

ピン方向型備考
objectin · datajson
resultout · dataarray

Object Set Field

blueprint.collection.objectSetField · Pure

Set JSON Fieldに取って代わられています。こちらはパスを受け取るため、入れ子のフィールドにも届きます。パレットからは非表示ですが、このノードを持つグラフでは引き続き実行されます。fieldは単なる名前であり、その中のドットはパスの区切りではなく名前の一部として扱われます。空の名前はコピーをそのまま返します。

ピン方向型備考
objectin · datajson
fieldin · datastringカード上のリテラルを受け付けます。
valuein · dataany
resultout · datajson

Object Remove Field

blueprint.collection.objectRemoveField · Pure

Remove JSON Fieldに取って代わられています。パレットからは非表示ですが、このノードを持つグラフでは引き続き実行されます。

ピン方向型備考
objectin · datajson
fieldin · datastringカード上のリテラルを受け付けます。
resultout · datajson

Object Merge

blueprint.collection.objectMerge · Pure

浅いマージであり、衝突した場合はbが優先されます。ネストしたオブジェクトはマージされず、置き換えられます。Merge JSON Objectは、別の型 id を持つ同一の操作です。

ピン方向型備考
ain · datajson
bin · datajson
resultout · datajson

JSON

パスを扱うノードは、ドット記法でドキュメントを指し示します——user.profile.nameのように、また配列の添字には数値のセグメントを使います——items.0のように。キーの中のリテラルなドットは\.としてエスケープします。空のパスはドキュメント全体を意味するため、パスを指定しないSet JSON Fieldはそれをまるごと置き換えます。

Get JSON Field

blueprint.data.jsonGet · Pure

存在しないパスはnullになるため、存在しないフィールドとnullを保持するフィールドは同じように読み取られます。その違いが重要な場合はHas JSON Fieldを使ってください。

ピン方向型備考
jsonin · datajson
pathin · datastringカード上のリテラルを受け付けます。
resultout · datajson

Has JSON Field

blueprint.data.jsonHas · Pure

真偽値ではなく存在の有無を見ます——値がnullであるフィールドも、存在はしています。

ピン方向型備考
jsonin · datajson
pathin · datastringカード上のリテラルを受け付けます。
resultout · databoolean

Set JSON Field

blueprint.data.jsonSet · Pure

入力をコピーし、そのコピーへ書き込みます。パスの途中で欠けているコンテナは作成されます——次のセグメントが数値であれば配列、そうでなければオブジェクトになります。そのため、空のドキュメントへstats.hpを書き込むと{ "stats": { "hp": … } }が生成されます。

ピン方向型備考
jsonin · datajson
pathin · datastringカード上のリテラルを受け付けます。
valuein · dataanyJSON セーフな形で保存されます。
resultout · datajson

Remove JSON Field

blueprint.data.jsonRemove · Pure

オブジェクトのフィールドを削除するか、配列の項目を取り除いて後続の要素を詰めます。存在しないパスは、コピーをそのまま返します。

ピン方向型備考
jsonin · datajson
pathin · datastringカード上のリテラルを受け付けます。
resultout · datajson

Make Object

blueprint.data.jsonMakeObject · Pure

動的なピンの組からオブジェクトを組み立てるため、下のシグネチャは出力のみを示します。カード上の各フィールドは、Name入力(string、カード上のリテラルを受け付ける)とValue入力(any)を1組追加します。新規ノードは1組から始まります。名前は実行時に読み取られるため、配線されたNameはキーを計算で求められます。名前が空である、または前に出てきた名前と重複するフィールドはスキップされます。

ピン方向型備考
resultout · datajson

Make Array

blueprint.data.jsonMakeArray · Pure

動的なItem入力をピンの順に並べて配列を組み立てるため、下のシグネチャは出力のみを示します。新規ノードはどのピンも持たない状態から始まります——カード上で追加してください。これがarray型を生成するノードであり、組み立てた配列をArray Lengthや List のSet List Contentへ渡す方法です。

ピン方向型備考
resultout · dataarray

Merge JSON Object

blueprint.data.jsonMergeObject · Pure

bが優先される浅いマージであり、Object Mergeと同一です。オブジェクトでない入力は{}として扱われます。Object Mergeに取って代わられています。パレットからは非表示ですが、このノードを持つグラフでは引き続き実行されます。

ピン方向型備考
ain · datajson
bin · datajson
resultout · datajson

Clone JSON

blueprint.data.jsonClone · Pure

深く、JSON セーフなコピー。書き込み系のノードはすでに入力をコピーしているため、これが必要になるのは、同じドキュメントを、互いの変更を見てはならない2つの分岐へ渡そうとするときだけです。

ピン方向型備考
valuein · datajson
resultout · datajson

値を保持する

Memo

blueprint.data.memo

実行がそこを通過するときに一度だけ入力を読み取り、次に実行がそこを通過するまで、その値を出力に保持し続けます。最初に通過するまでは、出力はnullとして読み取られます。この値はブループリントの変数と同じ store に保持されます:Initの中で保持した値は後のMouse Clickでも読み取れ、そのオーナーインスタンスが振り出しに戻るときに一緒に振り出しに戻ります。

この出力は複数の消費先に供給できます。計算されたデータ出力が供給できる消費先は1つだけで、そこから2本目のエッジを接続すると1本目と置き換わります。その理由は2つあります:純粋なノードは読み取るたびに再評価されるため、同じRandom Floatを2回読み取ると2つの数値が得られてしまいます。そして実行ノードの出力は、それを生成したパルスに属します。Memo にはただ1つの書き手——自分自身——しかいないため、どの読み取りも、その書き込みが残した値を返し、複数へ分岐させても誰も驚きません。このページのリテラル、Elementのバインディング、Fnのパラメータピンも、読み取るたびに同じ値を返すため、同じように複数へ分岐できます。

ピン方向型備考
inin · exec—
valuein · dataany実行が通過する際に一度だけ読み取られます。
nextout · exec—
resultout · dataanyカード上では Value と表示されます。

意図的に latent ではなく同期的です——待つべきものが何もなく、latent なノードはインラインのストーリー値の中では使えないためです。

このページの目次