はじめに
今回の記事はUE4や5の入門者向けの記事です。
情報を取得したいキャラクターやアイテムをサクッと実装してみましょう!
使いどころによっては負荷になったりするので
この記事をマスターしたら、インターフェースやハード参照・ソフト参照などを学習してSOLIDの原則に従った設計や思想の理解にステップアップしていただければと思います。
やりかた
⓪アクターの作成と簡単な解説
ファーストパーソンテンプレートで解説しますが、
基本的な実装なのでどこでも使えます。
モノの単位が
Unityの場合オブジェクトですが
UE4ではアクターとよびます。
試しにアクターを生成してみましょう。
アクターを配置のタブからキューブをマップにドラックし配置しましょう!


Unityではコードを別で書いて適応したいオブジェクトに貼り付けることで動作しますが、UE4ではアクターに機能を持たせるときには必ずブループリント化しなければなりません。
ブループリント化は詳細タブのブループリント/スクリプトを追加からできます。

作成するとコンテンツブラウザに作成したブループリントが表示され、
マップ上のキューブもブループリントに変化します。

作成したブループリントを開きましょう。
主にイベントグラフというタブを使用します。
ここではUnityのStart()やUpdate()のような関数があり、
アクターが何かに触れたときの動作を設定したり
ありとあらゆる動作をここで実装することができます。

今回はプレイヤーがこのブループリントにアクセスして
このキューブの情報を取得できるようにします。
①情報を持たせてみる
上で作成したブループリントに名前と年齢、HPを持たせてみましょう。
イベントグラフの変数の+を押して変数を作成できます。

名前を付けたら型を指定します。
型は変数の種類でこれを設定することで文字や数字などの区別がつけられます。
変数の左側のアイコンを左クリックすることで変更できます。
今回はそれぞれ
name.......String
age..........Integer
hp............Integer
にしましょう

また変数の右にあるアイコンをクリックしてみましょう。
Unityでいうインスペクターに公開され直接値を操作できます。

マップ上のオブジェクトの詳細にも表示されている。

変数をクリックした状態で詳細を見るとデフォルト値を設定できます。
好きな名前や年齢、HPを設定しましょう。



これで変数を持たせることができました。
②プレイヤーブループリントからキューブの情報を取得しよう。
プレイヤーブループリント
今回はFirstPersonCharacterのイベントグラフを開きます。
キー入力イベントを作成しましょう。
グラフ上で右クリックを押して、、
検索窓にショートカットの t. と入力します。
状況に合わせた表示にはチェックを入れておきましょう。
カスタムイベントを追加…を押します。

名前をGetTargetActorInformationにします。
また型をCube_BlueprintにしたtargetActor変数を作成しましょう。
また目のアイコンを押して公開設定にしましょう。

Ctrlキーを押しながら変数をドラックして置くと変数のゲットノードが出ます。
Altキーを押しながらだと、セットノードが出ます。
ドラックしてから選ぶこともできます。

変数から紐をだして話すと検索窓が出ます。
そこにGetと入力すると下のほうに作成した変数が出てきます。
これを押すと対象の情報を取得できます。

3三種類選んだらPrintStringというログを出力するノードを使って画僧のように組んでみましょう。
異なる変数同士をつなげると自動的に変換ノードが出てきます。

右クリックから検索窓に@と入力しましょう。
するとキーイベントを作成できます。

詳細タブからキーの種類を変更できます。

そしたらこのようにつなげます。
これで実行中に@を押したら関数が実行されるようになりました。

できたら左上のコンパイルボタンを押しましょう。

準備完了です。
マップに戻って
キャラクターを選択した状態で詳細ウィンドウを見てみると変数が設定できることが分かります。

置いたキューブを変数に設定してみましょう。
変数の右側にあるスポイトアイコンを押してマップ上のブループリントを選びます。


上のほうにあるプレイボタンを押して実行してみましょう。

するとキーを押すたびに
設定したオブジェクトの情報が取得できるようになりました。

長くなってしまったので
次回は自動的に対象を選択する編を書きます。
さいごに
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。