2026/4/14大约 4 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — print
定义
print() 是 Godot 中最基本的输出函数,用于在控制台(输出面板)打印信息。你可以把它理解为游戏开发者的"传声筒"——程序运行时,你无法直接看到变量里存了什么,但可以通过 print() 把变量的值"念"出来,显示在屏幕下方的输出窗口里。
就像你在读书时用荧光笔标记重点句子一样,print() 帮你在程序运行过程中"标记"出你想看到的信息。它是在游戏开发中最常用的调试工具。
函数签名
C#
// C# 中使用 GD.Print
GD.Print(params object[] values);GDScript
func print(...) -> void参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
...(可变参数) | Variant(任意类型) | 否 | 可以传入任意数量、任意类型的值,所有值会被转换成字符串后拼接在一起输出。不传参数则输出空行 |
返回值
无返回值(void)。此函数仅用于在控制台输出信息,不会影响程序的运行结果。
代码示例
基础用法:打印各种类型的信息
C#
using Godot;
public partial class PrintExample : Node
{
public override void _Ready()
{
// 打印一段文字
GD.Print("Hello, Godot!");
// 运行结果: Hello, Godot!
// 打印数字
GD.Print(42);
// 运行结果: 42
// 打印多个值(自动拼接)
GD.Print("玩家分数:", 100, " 等级:", 5);
// 运行结果: 玩家分数:100 等级:5
}
}GDScript
extends Node
func _ready():
# 打印一段文字
print("Hello, Godot!")
# 运行结果: Hello, Godot!
# 打印数字
print(42)
# 运行结果: 42
# 打印多个值(自动拼接)
print("玩家分数:", 100, " 等级:", 5)
# 运行结果: 玩家分数:100 等级:5实际场景:调试玩家状态
C#
using Godot;
public partial class Player : CharacterBody2D
{
[Export] public float ExMoveSpeed = 200f;
private float _healthPoints = 100f;
private int _score = 0;
public override void _Ready()
{
// 打印玩家的初始状态
GD.Print("=== 玩家初始化 ===");
GD.Print("移动速度: ", ExMoveSpeed);
GD.Print("生命值: ", _healthPoints);
GD.Print("分数: ", _score);
}
public void TakeDamage(float amount)
{
_healthPoints -= amount;
// 每次受伤时打印伤害信息
GD.Print("受到伤害: -", amount, " 剩余生命: ", _healthPoints);
}
}GDScript
extends CharacterBody2D
@export var ex_move_speed: float = 200.0
var _health_points: float = 100.0
var _score: int = 0
func _ready():
# 打印玩家的初始状态
print("=== 玩家初始化 ===")
print("移动速度: ", ex_move_speed)
print("生命值: ", _health_points)
print("分数: ", _score)
func take_damage(amount: float) -> void:
_health_points -= amount
# 每次受伤时打印伤害信息
print("受到伤害: -", amount, " 剩余生命: ", _health_points)进阶用法:格式化输出与调试标记
C#
using Godot;
public partial class DebugLogger : Node
{
private int _frameCount = 0;
public override void _Process(double delta)
{
_frameCount++;
// 每 60 帧打印一次性能信息
if (_frameCount % 60 == 0)
{
GD.Print($"[性能] 帧 {_frameCount}, FPS: {1.0 / delta:F1}");
}
}
// 带标签的调试输出,方便在控制台中搜索过滤
private void Log(string tag, string message)
{
GD.Print($"[{tag}] {message}");
}
public override void _UnhandledInput(InputEvent @event)
{
if (@event is InputEventKey keyEvent && keyEvent.Pressed)
{
Log("输入", $"按键按下: {keyEvent.Keycode}");
}
}
}GDScript
extends Node
var _frame_count: int = 0
func _process(delta: float) -> void:
_frame_count += 1
# 每 60 帧打印一次性能信息
if _frame_count % 60 == 0:
print("[性能] 帧 %d, FPS: %.1f" % [_frame_count, 1.0 / delta])
# 带标签的调试输出,方便在控制台中搜索过滤
func log_message(tag: String, message: String) -> void:
print("[%s] %s" % [tag, message])
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed:
log_message("输入", "按键按下: %s" % event.keycode)注意事项
print()输出到标准输出流:在 Godot 编辑器中,输出会显示在底部的"输出"面板中。导出游戏后,输出会写入日志文件或终端。print()不会在游戏画面上显示文字,如果需要在画面上显示文字,请使用Label节点。生产环境请谨慎使用:过多的
print()调用会影响性能,特别是在_process()等每帧调用的函数中。建议在发布游戏前移除或注释掉调试用的print()语句。C# 中的对应函数:C# 中使用
GD.Print()来实现相同功能。不要使用Console.WriteLine(),因为它的输出不会显示在 Godot 的输出面板中。多个参数自动拼接:
print()接收多个参数时,会把它们直接拼接在一起,中间不会自动加空格。如果需要空格或其他分隔符,请手动添加。
