Godot Engine で用意されている print関数をまとめた記事となります。
目次
print関数のまとめ
print関数とは
print関数とは、主にデバッグ用として使う機能です。例えば print() を呼び出すとエディタの下部に print() の内容が出力されます。
もし表示されない場合は「出力」をクリックすることで表示することができます。
出力ウィンドウの動作は、メニューの「エディタ > エディタ設定」から「一般 > 出力」から設定できます。
- フォントサイズ: 出力ウィンドウのフォントサイズ
- 実行時には常に出力をクリアする: デバッグ開始時に「出力」ウィンドウの内容をクリアするかどうか
- 実行時には常に出力を開く: デバッグ開始時に「出力」ウィンドウを表示する
- 停止時には常に出力を閉じる: デバッグ終了時に「出力」ウィンドウを閉じる
print関数には基本的に文字列や数値を渡すことになりますが、リストやオブジェクトを渡すこともできます。
class Obj:
var a = 1
var b = 2
var c = "abc"
func _ready() -> void:
# 文字列を出力
var s = "文字列"
print(s)
# 数値を出力
var i = 123
print(i)
# リストを出力
var list = [1, 2, 3]
print(list)
# オブジェクトを出力
var obj = Obj.new()
print(obj)
これを実行すると以下のように出力されます。
文字列
123
[1, 2, 3]
[Reference:1262]
ただオブジェクトはリファレンス番号となってしまうので、_to_string() を実装することで文字列表現にすることができます。
class Obj:
var a = 1
var b = 2
var c = "abc"
# この実装をすることで print() で文字列表現となる.
func _to_string() -> String:
return "a:%d b:%d c:%s"%[a, b, c]
func _ready() -> void:
var obj = Obj.new()
print(obj)
それと引数は複数渡すことも可能です。
func _ready() -> void:
var s = "文字列"
var i = 123
var list = [1, 2, 3]
print(s, i, list)
文字列123[1, 2, 3]
print_stack(): スタック情報を出力する
print_stack() はコールスタック情報を出力します。
func _ready() -> void:
_func1()
func _func1():
_func2()
func _func2():
print_stack()
これは _ready() → _func1() → _func2() を呼び出して、print_stack() を呼び出す例です。
Frame 0 - res://Main.gd:9 in function '_func2'
Frame 1 - res://Main.gd:7 in function '_func1'
Frame 2 - res://Main.gd:4 in function '_ready'
出力結果はこのようになり、コールスタックを出力ウィンドウで確認することができます。
ただこの出力処理が何回も呼び出される場合は「出力」ウィンドウのログが大量のコールスタック情報で埋まってしまうので、 push_error() / push_warning() を使う方が良いかもしれません。
print_debug(): デバッグのみ出力する
print_debug() は、デバッグ実行時のみ出力する関数です。配布するために実行ファイルしたときには出力されなくなります(print() は実行ファイルにしても出力されます)。
printerr(): エラー情報として出力する
printer() は、エラー情報を出力する関数です。例えば関数呼び出しの引数に「無効な値」が渡されたなどの場合、これでエラー出力しておくと良いです。
例えば以下のように記述します。
func _ready() -> void:
print("通常の出力")
printerr("エラー出力")
printerr() が呼び出されると「出力」が赤色となり、エラーが発生したことがわかりやすく表示されます。
そして出力された文字が「赤色」となります。
printraw(): 改行なしでprintする
printraw() は他のprint関数と異なり、改行せずに出力します。
func _ready() -> void:
printraw("A")
printraw("B")
printraw("C")
このように記述すると以下のように出力されます。
ABC
push_error() / push_warning(): デバッガにスタック情報を登録する
push_error() / push_warning() はデバッガにスタック情報を登録します。呼び出されたときのコールスタックを知りたいときに便利です。
func _ready() -> void:
push_error("エラースタック")
_func1()
func _func1():
push_warning("警告スタック")
_func2()
func _func2():
pass
これを実行するとエディタの「デバッガー」に情報が追加されます。
ここを開くと、登録したスタック情報が表示されます。
参考
- GODOT DOCS > @GDScript: 組み込み型・組み込み関数についての公式ドキュメント