無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、Array[Dictionary] 型などのデータを出力ボトムパネルなどで見やすく表示(Pretty Print) してくれる無料のアセット「Log.gd」をインポートして、利用例の実行までの手順を紹介します。
インポート時にファイルが Conflict (衝突) してエラーが起きた場合の対処例(非公式)も紹介します。

※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご使用ください。
※ Log.gd, a gdscript pretty-printer v0.0.6 を使用します。
プロジェクトの作成
Log.gd アセットを導入するプロジェクトを作成します。
既存のプロジェクトに追加する場合はこの章は読み飛ばしてください。
Godot Engine プロジェクトマネージャーを起動して、ウィンドウの左上の「作成」ボタンをおします。
表示された「新規プロジェクトを作成」ダイアログでプロジェクト名やプロジェクトフォルダのパスを指定して「作成して編集」ボタンを押します。

Log.gd アセットのインポート
起動したエディターの上部の AssetLib を選択して、 AssetLib ワークスペースを表示します。
AssetLib ワークスペースの左上の検索ボックスで Log.gd と入力して検索された結果から「Log.gd, a gdscript pretty-printer」を選択します。

表示されたダイアログの「ダウンロード」ボタンを押します。

通常は、この後インストールが行われますが、 Log.gd v0.0.6 では、コンフリクトの問題が発生したので、次の章でその対処例を紹介します。
Log.gd の複数のファイル Conflict (衝突) 問題の対処例
プロジェクトは新規作成したばかりなのに、Log.gd の「インストール前にアセットを設定」ダイアログで「5ファイルがあなたのプロジェクトとコンフリクトしたため、インストールされません」と警告されました。
この章では、これを無視して、Log.gd をインストールした後、フォルダの一部を移動・削除することで対処します。
※以下の対処例は、公式の対処法ではなく、偶然発見した対処例です。自己責任でご利用ください。Log.gd のバージョンはv0.0.6 です。

「アセットルートを無視」をチェックすると、「プロジェクトと競合するファイルはありません」と警告が消えたので「インストール」ボタンを押します。

「正常にインストールされました!」とダイアログが表示されるので OK で閉じます。
しかし、5つのエラーが出力されます。
一度、エディタを閉じて、プロジェクトを再び開きます。

エディタの再起動で、エラーの表示は消えました。
ファイルシステムドックで、長い名前の Log.gd のルートフォルダ「 log.gd-91bf~」の直下の addons フォルダを res:// にドラッグ&ドロップで移動します。
すでに addons フォルダがある場合は、「 log.gd-91bf~」の addons フォルダの中身をすべて res://addons フォルダに移動してください。
※通常、GUT などの他のプラグインを導入すると res:// の下に addons フォルダが作成され、その下の各プラグインのフォルダにプラグインはインストールされます。

「 log.gd-91bf~」フォルダを削除する前に、 readme.md ファイルだけ、先ほど移動した addons フォルダの下位の log フォルダにドラッグ&ドロップで移動しておきます。
※これを行わなくても動作はすると思いますが、アセットの説明として残しました。

「 log.gd-91bf~」フォルダを削除します。これで先ほど移動した addons フォルダのみが残りました。

以上で、フォルダの移動・削除による、コンフリクトの問題の独自の対処は完了です。
※前述のとおり自己責任で行ってください。
Log.gd でシグナル情報の Array[Directory] 型データを整形
Log.gd のインストールとコンフリクトの問題の対処が済んだので、Pretty Print を試してみます。
お試し用のシーンを作成
Log.gd の Pretty Print の出力関数を試すためのシーンを作成します。
新規シーンのシーンドックで「ユーザーインターフェース」を選択します。

Control ルートノードを StudyAssetLogGd にリネームして、そのノードを選択した状態で、シーンドックの右上の+のアイコンの「スクリプトをアタッチする」ボタンを押します。

study_asset_log_gd.gd スクリプトを「作成」ボタンを押して作成してノードに割り当てます。

作成した study_asset_log_gd.gd スクリプトを、以下のスクリプトで上書き保存します。
※詳細は、スクリプト内のコメントを参照してください。
extends Control
class_name StudyAssetLogGd
## データを整形して出力する無料アセット Log.gd の使い方を学ぶためのクラスです。
## このスクリプトを割り当てたシーンを実行した直後に、辞書のデータを pretty print します。
# Called when the node enters the scene tree for the first time.
func _ready():
# 改行付きで Pritty Print を行う Log.gd の関数で、辞書のデータを出力します。
var array_dictionary: Array[Dictionary] = [{"name": "piyo", "level": 99}, {"name": "fuga", "level": 39}]
print("以下は、print による辞書データの出力です")
print(array_dictionary)
print("以下は Log.gd による辞書データの Pretty Print です。")
Log.prn(array_dictionary)
return
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
Ctrl + S キーで study_asset_log_gd.tscn ファイルにシーンを保存します。
結果
F6 キーで選択されているお試し用のシーンを実行します。
サンプルの Dictionary (辞書) のデータが、改行やタブによって整形され、色分けされて見やすく出力されました。

以下は、print による辞書データの出力です
[{ "name": "piyo", "level": 99 }, { "name": "fuga", "level": 39 }]
以下は Log.gd による辞書データの Pretty Print です。
[study_asset_log_gd:13]: [ {
"name": piyo,
"level": 99 }, {
"name": fuga,
"level": 39 } ]
--- Debugging process stopped ---
まとめ
今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、Array[Dictionary] 型などのデータを出力ボトムパネルなどで見やすく表示(Pretty Print) してくれる無料のアセット「Log.gd」をインポートして、利用例の実行までの手順を紹介しました。
インポート時にファイルが Conflict (衝突) してエラーが起きた場合の対処例(非公式)も紹介しました。
参照サイト Thank You!
- Godot Engine – Free and open source 2D and 3D game engine
- Log.gd, a gdscript pretty-printer – Godot Asset Library
- GitHub – russmatney/log.gd: An ergonomic pretty-printer for gdscript
- Array — Godot Engine (4.x)の日本語のドキュメント
- Dictionary — Godot Engine (4.x)の日本語のドキュメント
記事一覧 → Compota-Soft-Press
コメント