こんにちは、Unityエンジニアのオオバです。
Unity公式が提供するノードベースプログラミングツール「Visual Scripting」には5種類の変数が存在します。ソースコードを書けなくてもプログラミングができてしまうVisual Scripting。非エンジニアの方も注目している人は多いはず。
「変数」とはプログラミングにとって超重要な要素です。 この記事を通して変数の種類を理解し、Visual Scriptingに役立ててください。
Visual Scriptingの5種類の変数を適切に使い分けよう
はじめに結論を簡単にまとめます。
①「Graph変数」はグラフ内で使用できるプライベートな変数
②「Object変数」はパブリックなインスタンス変数
③「Scene変数」はシーンごとのパブリックなstatic変数
④「App変数」はアプリ全体からアクセス可能なstatic変数
⑤「Saved変数」はアプリ全体からアクセス可能かつローカル保存されるstatic変数
こんな感じです。5種類の違いは一言で言えば スコープの違い です。それぞれアクセスできる範囲が異なります。基本的に通常のプログラミングの感覚と同じで、 アクセスしやすい便利な変数を使い過ぎると見通しが悪くなります。 つまり③以降の変数の使い過ぎに注意ということです。
それぞれの変数の特性を理解して適宜使いこなしていきましょう。各変数の詳しい解説は以降の章で解説します。ぜひ、最後まで読んでみてください。
→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら
Visual Scriptingの変数とは?
そもそもVisual Scriptingの変数について解説します。プログラミングで使用する変数とまったく同じ「変数」という機能がVisual Scriptingには5つ存在します。5つそれぞれの変数解説は後述します。

Script GraphまたはState Graphウィンドウの①「Blackboard」内の②タブから変数を選択できます。
Visual Scripting変数の追加方法
変数を追加する場所は変数の種類によっていくつか方法があります。もっとも確実なのはグラフウィンドウからの追加です。まずは変数の種類位をタブから選択します。

上の動画のとおり、変数名を入力後、「+ボタン」をクリックします。その後、Type(型)を指定すれば変数追加は完了です。
Visual Scripting変数の削除方法

逆にVisual Scriptingの変数を削除するときは追加した変数の「-ボタン」をクリックしましょう。
Visual Scriptingの変数のグラフ内での使い方
Visual Scriptingの変数をグラフ内で使う方法を解説します。結論、変数をドラッグ・アンド・ドロップするのが簡単です。

グラフ内で使用したい変数は、Blackboardから変数をドラッグ・アンド・ドロップしてみましょう。すると変数ユニットが生成されます。
使用可能な変数とグラフの関係性
グラフの種類によって使用できる変数が異なります。 以下表にまとめたので参考にしてみてください。
グラフの種類 | Graph変数 | Object変数 | Scene変数 | App変数 | Saved変数 |
---|---|---|---|---|---|
StateGraph | × | ○ | ○ | ○ | ○ |
ScriptGraph | ○ | ○ | ○ | ○ | ○ |
StateGraphにGraph変数は使えないということだけ覚えておきましょう。では、以降の章で各グラフの説明していきます。
Visual Scripting5つの変数
Visual Scriptingの5つの種類の変数を解説します。
①Graph変数
②Object変数
③Scene変数
④App変数
⑤Saved変数
変数の種類が5つもあって迷うかもしれません。そんなあなたに、結局どれを使うべきかを最後にまとめていますので、ぜひ参考にしてみてください。
①Graph変数

Graph(グラフ)変数の解説をします。Graph変数はスコープがGraph内に限定した変数です。Graph内からしかアクセスできません。例えばグラフ内にサブグラフを格納している場合、お互いのグラフからそれぞれのGraph変数にアクセスすることはできません。
Graph変数は参照スコープが最も狭いため使える場面では積極的にGraph変数を使うことをおすすめ します。
②Object変数

次にObject変数について解説します。Object変数はGameObjectに保持される変数です。自動生成される 「Variablesコンポーネント」 の中に値は保持されます。

つまり、上図のようにそのGameObjectにAddComponentされているグラフはアクセス可能だということです。
③Scene変数

次にScene変数です。Scene変数とはシーンごとに保持される変数です。

上図のとおりHierarchyウィンドウ内に自動生成される 「VisualScripting SceneVariables」 に格納されます。
シーン内どこからでもアクセスできるため、Graph変数、Object変数と比べるとスコープは広いです。
④App変数 / ⑤Saved変数


App変数、Saved変数はセットで解説します。両方ともシーンをまたいでどこからでもアクセスできる変数です。publicでstaticな変数というイメージです。
両者の違いは、アプリ実行後に保持するかしないかです。Saved変数はPlayerPrefs領域に保存され、アプリを再起動した際も保持されます。一方App変数はアプリを閉じるとクリアされます。
しかしApp変数、Saved変数どちらもVisual Scripting変数の中で最もスコープが広く危険な変数と言えます。最小限の使用に留めた方が安全です。
Visual Scriptingの変数まとめ
この記事ではUnityのVisual Scriptingの変数の種類について解説してきました。簡単に内容をまとめます。
①Visual Scriptingの変数はグラフウィンドウから定義可能
②5つの変数はそれぞれスコープが異なる
③スコープが広くなるごとに管理しづらくなるので注意
④特Scene変数、App変数、Saved変数は最小限の使用を推奨
こんな感じです。
Visual Scriptingはプログラミングの1種です。ゆえに変数の理解は必須です。
結局どの変数を使うべき?
Visual Scriptingを始めたばかりでは5種類の内どの変数を使うべきかがわからないと思います。 基本方針はスコープの小さい変数から使っていきましょう。
つまり、以下の順番です。
- Graph変数
- Object変数
- Scene変数
- App変数またはSaved変数
おそらくオオバはScene変数以降は使用しません。なぜなら管理が難しく、煩雑なプログラミングになるからです。基本的にはVisual ScriptingとC#は併用していくことになります(というかその方が楽です)。Scene変数、App変数、Saved変数はC#側定義し、Visual Scripting側から受け取れるような設計にするでしょう。
この辺りはプロジェクトの設計方針に関わるため、あくまで1意見として参考にしてください。
Visual Scriptingはプログラミングと同じで実際に使ってみてわかることがとても多いです。ぜひ実際にUnityエディタで触ってみて変数をいろいろ試してみてください。トライアンドエラーの中で初めて答えが出てくるものです。
この記事があなたのゲーム開発に少しでもお役に立てたら嬉しいです。

この記事が気に入ったらフォローしよう
TikTokを始めました!!毎朝7時から自作ゲーム開発を配信しています。
ぜひフォローをお願いします!
最後まで読んでいただきありがとうございました!
すばらしいVisual Scriptingライフをお過ごしください。
- Unity2021.3.5f1
- Visual Scripting v1.7.8