執筆: “F.S”
はじめに
初めまして。プログラマーのF.Sです。
今回の内容はUnrealEngine(以降UE)のブループリントでjsonを読み込んでパラメータを反映させるということをやっていきます。
UE5では「Json Blueprint Utilities」というプラグインを使ってブループリントでjsonを読み込めるのですが、UE4だと無いんですよね。
一応UE4でもC++で使うことができるのですが、C++だけで作ると参照するパラメータが増えたり減ったりするだけで書き換えるコストが発生します。すごく面倒くさいです。
なので、C++で書いたものをブループリントで手軽に使えるようにしてパラメータ追加・削除に耐えられる作りにしていきましょう。
この記事の内容
1. 準備
2. 実装手順
・ C++で書いてみる
・ ブループリントで使ってみる
3. まとめ
4. 関連記事
準備
今回用意するのはこちらです。
- UE4.27
- vsCode(visual studio)
実装手順
・C++で書いてみる
まずはC++側から作成します。
左上の「ファイル」から「新規C++クラス」を選びます。親クラスは「Actor」にしてください。名前は「JsonLoad」にしてください。「public」か「private」を選ぶところがあるので「public」を選択してください。

C++ファイルができたのを確認したら、現在開いているプロジェクトの「Source/<プロジェクト名>/<プロジェクト名>.Build.cs」を開き、「Core」や「Engine」などが書かれているところに「Json」と「JsonUtilities」を追加し保存してください。

その後、UEに戻り「コンパイル」と書かれているところをクリックしてください。コンパイルが成功したら、念のためプロジェクトを再起動しましょう。
再起動したら、作成したC++ファイル(.hと.cpp)を以下のように編集します。
.hファイル
.cppファイル
編集したら保存し、またUEで「コンパイル」しましょう。
コンパイルが成功したらC++はこれで終わりです。
・ブループリントで使ってみる
まずは読み込むためのjsonファイルを作成しましょう。
プロジェクトが入っているフォルダの「content」フォルダにテキストファイルを作成します。名前は「param.txt」にしておきます。その後そのテキストファイルを開き「ファイル」から「名前を付けて保存」を選び、フォルダ名の下にあるファイルの種類を「すべてのファイル」にし、名前を「param.json」にします。



保存できたらテキストファイルは削除し、jsonファイルをvsCodeなどで開き、以下のように編集してください。
次はブループリントで作成します。
「コンテンツブラウザ」に「BluePrint」のフォルダを作成します。

「コンテンツブラウザ」の「C++クラス」というフォルダを開き、「<プロジェクト名>/public」の中にある先ほど作成した「JsonLoad」を右クリックします。
そうしたら、「JsonLoadに基づくブループリントクラスを作成」を選択します。
名前は「BP_JsonLoader」にしてください。場所は先ほど作成した「BluePrint」にしてください。



作成したら、「BP_JsonLoader」のブループリントを開き、「イベントグラフ」で右クリックし、「Load Json」と入力し「Load Json」を選択します。
そうするとブループリント上に「Load Json」が出てきます。


こちらは本来UEには存在しない関数ですが、「JsonLoad」をもとに作成したアクターなので、そのC++で作成した関数を一部使用することができます。
「Load Json」を「BeginPlay」に繋ぎ、「File Path」に以下のものと繋げてください。

その後、イベントグラフの空いてるところで右クリックし、「Get Value」と入力してください。そうしたら「Get Value」関数が出てくるので選択します。

「Get Value」を「Load Json」の右に繋ぎ、「Pram Name」を「name」にしてください。
そうしたら今度はまたイベントグラフで右クリックし、「Print String」と入力し選択します。

「Get Value」の右に「Print String」を繋ぎ、「Return Value」を「In String」に繋ぎます。
最後に「保存」を押してください。

これらが終わったら、このアクターをレベルに配置します。
「コンテンツブラウザ」の「BP_JsonLoader」を「ビューポート」にドラッグアンドドロップしましょう。

配置できたら上の「プレイ」を押して実行しましょう。
ビューポート左上に「mike」と表示されていたら成功です。


まとめ
これでUE4でjsonが使えるようになりました。
jsonでパラメータを設定しておくとエディタを開かずにオブジェクトのスポーン数や敵のHPなどを設定できるようになります。
また、パッケージ化しても値が変更できるので何か簡単なツールを作る際に役に立ちます。
ゲーム開発やその他の開発に役立てましょう。