ymars
(ymars)
1
特定のクラスのアクタために参照型の変数を作ったのですが、何も参照していないのはなぜでしょう?たとえば、MyDoughBP というクラスがあって、
そのアクタを参照する変数 Doughnut を作りました。
そして、次のようなグラフを組みました。(F を押すと、変数 Doughnut の名前が表示されるものです。)
しかし、結果は何も表示されませんでした。これはなぜでしょうか?特定のブループリント クラスのアクタを参照する変数なのですから、最初の画像で赤く囲われているドーナツへの参照がこの変数 Doughnut に入っていてもよいのではないでしょうか?
なお、このことは次の動画チュートリアルでも扱われている事柄ですが、なぜこのように変数に値が入っていなのかが分かりません。
関連する動画チュートリアル Blueprint Quickshot 9 More Blueprint Communication (v47)
ymars
(ymars)
2
変数の値は自分で設定しなければならないからです。たとえば、Int (整数) 型の変数は、作成すると自動的に 0 が初期値 (デフォルト値) として入ります。(ただし一旦コンパイルする必要があります。)
また、Bool 型の場合は false が、Float 型の場合は 0.0 が自動的にデフォルト値となります。しかし、参照型の場合は、何も入らないのです。
ところで、参照型の変数に入る値は、詳しく言うならばアクタに関する情報のメモリ上での位置です (メモリのどこにそのアクタに関する情報があるかを示しています)。簡単に言うならば「参照」です。 ブループリントのユーザーはいちいち「メモリ上の位置」など意識する必要はありませんので、アクタを識別するための参照という値があって、それを入れることができるのが参照型の変数だ と押さえておくだけでよいでしょう。整数型の変数には整数が入るように、参照型の変数には参照 (メモリ上の位置) が入ります。
問題は、どのアクタの参照を入れるかということです。 ここで、クラスとインスタンスの関係を簡単に振り返ると、クラスはインスタンスの設計図であり、クラスが具体的にレベルに配置されるとインスタンスと呼ばれます。そして、参照型の変数には、インスタンスへの参照が入らなければなりません (クラスへの参照ではありません)。
たとえば、MyDoughBP というクラスからは、次のように、いくつでもインスタンスをアクタとしてレベルに配置できます。
つまり、インスタンスはクラスとは異なり、複数作ることができ、複数あるのならばどれかを指定しなければ参照も変数に入れられません。
では、このうち MyDoughBP3 というインスタンス (の参照) を変数 Doughnut に入れてみます。(変数を「編集可能」にして、スポイトのアイコンをクリックしてから、レベルの MyDoughBP3 をクリックすると、そのように指定されます。)
そして、F を押すと、変数 Doughnut の名前が表示される、先のグラフを実行すると、ちゃんと MyDoughBP3 というインスタンスの表示名が表示されます。
整数型の変数に入る値 (整数) は無数にありますが、参照型の変数に入る値 (参照) も複数ありえます。どれかをユーザーが指定する必要があるということです。
関連する UE4 AnswerHub スレッド (動画チュートリアル関連) 変数の型で Reference とはどのようなものですか?
関連する UE4 AnswerHub スレッド (動画チュートリアル関連) キャラクターなのにオブジェクトとは?
関連する UE4 AnswerHub スレッド (動画チュートリアル関連) コンパイルすると関数でエラーになるのはなぜ?