Unityアセット「 Game Creator」に搭載している3つの変数管理システム「Global Variables」「Local Variables」「List Variables」の使い方と解説をします。
Table of Contents
変数の種類
GameCreatorには3つの変数があります。
Global Variables | 全てのシーンで利用可能な変数です。専用のエディタで管理します。 |
Local Variables | シーン内のみ利用可能な一時的な変数です。コンポーネントとして用意しています。 |
List Variables | 配列型の変数です。Local Variablesの一種でコンポーネントとして用意しています。 |
変数の型
Game Creatorは以下の変数に対応しています。
Bool | Color | Number | GameObject | |
String | Sprite | Texture2D | Vector2 | Vector3 |
GameObject型は保存できません。
Global Variable
全てのシーンで利用可能な変数です。
GameCreator > Preferences > Variablesに専用のエディタがあります。
右側の+の左に名称を入れてから+ボタンを押すと変数を追加できます。
Name
変数の名称。ゲームでは使用しないので分かりやすい名称を。
Name右側のチェックボックス
その変数をセーブ可能にするか。チェックを入れるとAction「Save Game」時に値を保存し、「Load Game」時に保存した値をセットします。
Type
変数の型
Value
初期値
Tags
エディターの見た目の変化。タグの種類と色は画面右側「Edit Tags」で設定します。画像の例で言えば、赤色表示に設定しているtagを選んでいます。ゲームでは使用しません。
Local Variables
シーン内のみ利用可能な変数です。コンポーネントなのでゲームオブジェクトにアタッチして利用します。右側の+の左に名称を入れてから+ボタンを押すと変数を追加できます。
Name、Name右側のチェックボックス、Type、ValueはGlobal Variablesと同じ項目です。
ID
セーブ時に保存する値のキーとなる項目。この値は異なるローカル変数で必ず違う値にする必要があります。GUIDで発行しているようなので、基本的には必ず異なります。ロードする時は、このIDが一致するローカル変数に値をセットする処理が入ります。
ローカル変数の使い道は一時的な変数を利用するのにGlobal Variableエディタを汚さない他、本領は複数利用前提のPrefabにアタッチすることにより、同一Prefabの異なるゲームオブジェクト間で格納する値が異なるけど、名称が同一な変数を用意できることです。
▲緑色CubeのPrebasにbool型変数coreを設定。画面上は3つのCubeがあり、Qube1の変数coreを変更しても残り2つのCubeには反映しません。
例えば、複数の味方キャラクターがおり、全員に経験値という概念が存在するとします。その場合はCharacterコンポーネントにLocal Variablesコンポーネントをアタッチし、「exp」という名前のNumber変数を用意すれば、各キャラクター個別に経験値を管理することができます。勿論、Global Variableと同じく複数の変数を管理できるため、各ステータスを全てセットするような処理も簡単に実装できます。
上記Prefabの例ですが、実はそのまま利用するとセーブが正しく機能しません。何故なら1つのLocal Variablesごとに1つのIDであり、多数の同一Prefabコンポーネントを使用した場合は全てのコンポーネントで同じIDになってしまうためです。そのため、最初からHierarchyで個別にIDを変える、Actionにはないのでプログラムを使用して直接IDを書き換える等なんらかの対策が必要です。
List Variables
Local Variablesと同様にシーン内のみ利用可能な変数です。コンポーネントなのでゲームオブジェクトにアタッチして利用します。Local Variablesとの違いは1つしか変数がない代わりに配列型であることです。保存にも対応しています。
項目はGlobal Variables,Local Variablesと被るため省略します。
利用用途はLocal Variablesとは逆に数によって管理したい処理に利用します。RPGのパーティーメンバーの管理など。
Action項目でList Variableを操作する際のSelect要素
値の取得や更新時に配列のどの番号を取得するかを決定します。
Index | 任意の位置を指定します。 |
First | 0番目を指定します。 |
Last | 一番最後を指定します。 |
Previous | 現在の位置の一つ前を指定します。 |
Current | 現在の位置を指定します。 |
Next | 現在の位置の一つ上を指定します。 |
Random | ランダムに位置を決定します。 |
現在の位置は初期値0でAction「List Variables Iterator」にて変更が可能です。