(動画チュートリアル関連) 変数の型で「リファレンス」と「クラス」はどう違う?

「変数の種類」で「オブジェクト タイプ」というのがあり、さらにその中には「リファレンス」と「クラス」というのがあります。これらはどのようなものなのでしょうか?

結論から言えば、「リファレンス」というのは、クラスのインスタンスを参照するものであり、「クラス」というのはクラスを参照するものです。もう少し詳しく言えば、「リファレンス」は、クラスのインスタンスの情報が入っている場所を指し示す変数の型であり、「クラス」は、クラスの情報が入っている場所を指し示す変数の型のことです。

以上のことは、後で具体的にブループリントで説明してみますが、その前に、クラスとインスタンスの違いは、簡単に言えば、クラスが設計図であり、インスタンスは設計図をレベルにドラッグして具体的な物や機能などになったものです。

上の画像では 1 つのクラス (TestBPC_Cube) から、2 つのインスタンス (TestBPC_Cube と TestBPC_Cube2) を作っています (インスタンスの数は 1 つでも構いません)。詳しくは、

:arrow_forward:関連する UE4 AnswerHub スレッド (動画チュートリアル関連) クラスとインスタンスの関係

をご覧になってください。

また、「参照」とは、簡単に言えば、「あるデータがメモリの中のどこにあるか」を教えてくれる値です。つまりデータの場所を教えてくれます。コンピュータ上では、すべてのデータが 2 進数のデータとしてどこかに格納されているはずなので、そのありかを教えてくれるということです。詳しくは、

:arrow_forward:関連する UE4 AnswerHub スレッド (動画チュートリアル関連) 変数の型で Reference とはどのようなものですか?

をご覧になってください。

さて、「クラス」の変数は、クラス (設計図) のデータがどこにあるか教えてくれるものですので、その場所を頼りにしてデータを取得すれば、インスタンス (レベルに具体的に配置したもの) を作ることができるはずです。それを実現した例が次のグラフです。

Test_Cube_Class 変数は「クラス」を参照する変数です。具体的には TestBPC_Cube を参照する変数です。これを「スポーン アクタ」というノードにつなげています。この「スポーン アクタ」関数ノードは原文では Spawn Actor from Class です。つまり、クラスからアクタをスポーンさせるものです。実際にこれを実行すると、TestBPC_Cube のインスタンスがもう 1 個スポーン (出現) することになります。

さて、もう一方の「リファレンス」(インスタンスへの参照) の方ですが、TestBPC_Cube から作られたインスタンスを参照する Cube_Ref という変数を作り、次のように TestBPC_Cube2 インスタンスを指すようにして (赤枠部分) から、G キーを押すと、まず、Cube_Ref が指すインスタンスの名前を表示してから、Destroy Actor (アクタを破壊) 関数を使ってそのインスタンスをレベル上から削除しています。

以上の 2 つのグラフについてまとめると、クラスを参照する変数 (Test_Cube_Class) を利用して、そのクラスからインスタンスを作っています。また、レベル上にあるインスタンスを参照する変数 (Cube_Ref) を利用して、そのインスタンスを削除しています。

:arrow_forward:関連する動画チュートリアル UE4 Blueprint Quickshot 9 - More Blueprint Communication (v4.7)