2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[UE5] JsonBlueprintUtilities

Last updated at Posted at 2022-03-15

Jsonを気軽に読み書きしたい!

UnrealEngine5にJsonをブループリントから気軽に読み書きするプラグインがエンジンに組み込まれました。5.0時点ではBeta版となっており、今後APIの大幅な変更は予定されませんが安定面などの面で使用には注意が必要というステータスです。
Jsonはソースコントロールによるマージが可能なため、複数の開発者が同時に変更しても(コンフリクトに気を付ければ)問題が無く、気軽な運用ができることに大きなメリットがあると個人的に思います。

有効化

デフォルトではプラグインは無効化されているのでメインメニュー > Edit > Plugin を開いて有効化します。
image.png

ノードたち

Jsonファイルのセーブロード、Json文字列からのロードと文字列への出力、フィールドへの読み書きのノードがあります。
image.png

使用例

サンプルJson

以下のようなJsonファイルをContent/Json以下に配置します。

JsonUtilityLibrary

sample.json
{
	"name" : "IamJson",
	"value" : 123,
	"array" : [
		"index 0 in array",
		"index 1 in array",
		"index 2 in array"
	],
	"map" : {
		"first" : 1.2,
		"second" : 1.75,
		"third" : -0.001
	}
}

ブループリントでの利用例

まずはロードするときに与えるパスについて注意点があります。
直接相対パスで記述した場合、FPlatformProcess::BaseDir()からの相対パスとなります。エディタでは [エンジンのルート]/Engine/Binaries/Win64/ となりプロジェクト側からでは使いにくいので ProjectContentDirやProjectDirなどからの相対パスを作成して渡すことをお勧めします。
またもう一つ重要な点としてJson中の配列へのアクセスを行うことが出来ません。例えば前述のsample.jsonではarray以下を読み取ることはできません。ご注意ください。
(辞書形式(map|連想配列)であれば読み取れるのでこちらで代用などを検討してください。)
image.png

パフォーマンスについて

非常に気軽に利用できるプラグインですが、Jsonの構造をロードするときに細かく大量のメモリアロケーションを行うためパフォーマンス面ではあまり効率的ではありません。巨大なJsonを読んだり、ランタイム中にフレームレートを維持したままデータを読み取りたいといったニーズにはあまり適しません。
そういったニーズでは rapidjsonなどの高速かつ省メモリなパーサーを活用することをお勧めします。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?