ここではリストの使い方について学びます。

リストはデータを順番に並べて収納しているデータ構造のことで、良く貨物列車のコンテナ車の様な図を使って説明されています(貨物列車で画像検索してみてください)。
リストに似た概念に配列というデータ構造もありますが、長さを変更できない配列と違ってリストは(貨物列車のコンテナ車の様に)データを繋いだり外したりすることが出来ます。


1. 準備

まず準備です。
リストのテスト用に別の Script Graph を用意します

Scripts フォルダの中に入り、空いている部分を右クリックしてメニューを表示し、Create → Visual Scripting → Script Graph を選ぶ
Scripts フォルダ内に「New Script Graph」というアセットが出来るので「List Script」に名前を変更する
ヒエラルキーの PROGRAM をクリックしてインスペクタを表示する
Script Machine の Graph の For Script と書いてあるセルにアセットフォルダの List Script をドロップする


2. リストの作り方

List には変数の様に Flow、Graph、Object 等の種類があります。

まず Flow リストを作るには Create List ユニットを使います。
初期値をセットしたい場合はユニット内の Elements に初期値の数を入れて、値入力ポートから初期値を入力します。
これだけで Flow リストは出来ますが Flow 変数に代入して置くと便利かもしれません。
図 1 の例では Flow リストを作り、hoge、fuga という文字列で初期化し、 flowlist という Flow 変数に代入し、flowlist の中身を表示しています。

なお最後にくっついている For Each Loop ユニットについては後ほど説明します。


図1. Flow リストの例


その他の Graph リストや Object リストなどは変数と同じ様にブラックボードやゲームオブジェクトのインスペクタで定義します。
Type (型) を指定する時は list of 型名(float とか integer とか string とか)で検索すると便利です。
初期値をセットしたい場合は Value(初期値)の隣にある+ボタンを押して項目を追加します。
例えば図 2 は String 型の Graph リスト graphtest を定義した例です。
初期値は hoge、fuga にしました。


図2. Graph リストの例

あとは普通の変数の様にゲットユニットでアクセス出来ます(図 3)。


図3. Graph リストの使い方


3. リストに値を追加する

リストに値を追加するには Add List Item ユニットを使います。
使い方は図 4 を見ればすぐ分かると思います。


図4. リストに値を追加


4. リストから値を削除する

逆にリストから値を削除するためには、値で指定する Remove List Item ユニットと、値のある位置を指定する Remove List Item At ユニットの 2 つがあります。

まず Remove List Item ユニットの例が図 5 です。
hoge という値をリストから削除しています。


図5. Remove List Item ユニットの例


次に Remove List Item At ユニットの例が図 6 です。
Index で削除する位置を指定します( 0 番から始まるのに注意)。
今回の例では 0 番目にある hoge をリストから削除しています。


図6. Remove List Item At ユニットの例


5. リストの値にアクセスする

リストを作ったら保存されている値にアクセスしてみましょう。
これも簡単で、図7 の様に Get List Item ユニットを使うだけです。
Index でアクセスする位置を指定します( 0 番から始まるのに注意)。


図7. リストの値にアクセス


6. リストの全ての値にアクセスする

次はリストに保存されている全ての値にアクセスしてみます。
もちろんFor Loopユニットを使ってやっても良いのですが、リストの場合は For Each Loop ユニットを使った方が便利です。

例えば図8 (図3と同じスクリプトです)を見て下さい。
For Loop ユニットと使い方はほとんど同じですが、Index の下に Item という項目が追加されています。
ここから Index 番目の値が出力されます。


図8. For Each Loop ユニットの使い方