printt
2026/4/14大约 3 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — printt
printt
定义
printt() 和 prints() 类似,都是用来在控制台输出多个值的。区别在于:printt() 会在每个参数之间加一个制表符(Tab)而不是空格。
制表符的作用是让多列数据对齐——就像 Excel 表格的列一样。printt 名字里的 t 就代表 "tab"(制表符)。当你需要输出多行、多列的数据,让它们看起来整齐时,用 printt() 比 prints() 更合适。
函数签名
C#
// C# 中没有直接等价的 printt 函数
// 请用 string.Join 手动拼接制表符 "\t"
GD.Print(string.Join("\t", values));GDScript
func printt(...) -> void参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
...(可变参数) | Variant(任意类型) | 否 | 可以传入任意数量、任意类型的值,所有值会被转换成字符串后用制表符(Tab)分隔输出 |
返回值
无返回值(void)。此函数仅用于在控制台输出信息。
代码示例
基础用法:用制表符对齐输出
C#
using Godot;
public partial class PrinttExample : Node
{
public override void _Ready()
{
// 对比 prints 和 printt 的效果
GD.Print(string.Join(" ", "名字", "等级", "分数"));
GD.Print(string.Join(" ", "勇者", "5", "1000"));
// 运行结果:
// 名字 等级 分数
// 勇者 5 1000
// printt 的等价写法:用制表符对齐
GD.Print(string.Join("\t", "名字", "等级", "分数"));
GD.Print(string.Join("\t", "勇者", "5", "1000"));
// 运行结果:
// 名字 等级 分数
// 勇者 5 1000
}
}GDScript
extends Node
func _ready():
# 对比 prints 和 printt 的效果
prints("名字", "等级", "分数")
prints("勇者", "5", "1000")
# 运行结果:
# 名字 等级 分数
# 勇者 5 1000
printt("名字", "等级", "分数")
printt("勇者", "5", "1000")
# 运行结果:
# 名字 等级 分数
# 勇者 5 1000实际场景:输出对齐的角色属性表
C#
using Godot;
public partial class CharacterTable : Node
{
public override void _Ready()
{
// 输出角色属性表(用制表符对齐)
GD.Print(string.Join("\t", "角色", "生命值", "攻击力", "防御力"));
GD.Print(string.Join("\t", "------", "------", "------", "------"));
GD.Print(string.Join("\t", "战士", "200", "50", "30"));
GD.Print(string.Join("\t", "法师", "100", "80", "10"));
GD.Print(string.Join("\t", "盗贼", "120", "40", "20"));
// 运行结果:
// 角色 生命值 攻击力 防御力
// ------ ------ ------ ------
// 战士 200 50 30
// 法师 100 80 10
// 盗贼 120 40 20
}
}GDScript
extends Node
func _ready():
# 输出角色属性表(用制表符对齐)
printt("角色", "生命值", "攻击力", "防御力")
printt("------", "------", "------", "------")
printt("战士", "200", "50", "30")
printt("法师", "100", "80", "10")
printt("盗贼", "120", "40", "20")
# 运行结果:
# 角色 生命值 攻击力 防御力
# ------ ------ ------ ------
# 战士 200 50 30
# 法师 100 80 10
# 盗贼 120 40 20进阶用法:调试多帧物理数据
C#
using Godot;
public partial class PhysicsDebugger : Node
{
private int _frameCount = 0;
public override void _PhysicsProcess(double delta)
{
_frameCount++;
// 每隔 30 帧输出一次对齐的物理数据
if (_frameCount % 30 == 0)
{
var velocity = new Vector2(100, -50);
GD.Print(string.Join("\t",
$"帧:{_frameCount}",
$"dt:{delta:F4}",
$"速度:({velocity.X},{velocity.Y})"
));
}
}
}GDScript
extends Node
var _frame_count: int = 0
func _physics_process(delta: float) -> void:
_frame_count += 1
# 每隔 30 帧输出一次对齐的物理数据
if _frame_count % 30 == 0:
var velocity = Vector2(100, -50)
printt("帧:" + str(_frame_count), "dt:%.4f" % delta, "速度:" + str(velocity))注意事项
对齐效果取决于字体:制表符的对齐效果在等宽字体(如终端、代码编辑器)中表现最好。在 Godot 的输出面板中,对齐效果可能因字体不同而略有差异。
C# 没有直接等价函数:在 C# 中,请使用
string.Join("\t", values)配合GD.Print()来实现相同效果。与
prints()的选择:如果你只是简单地输出几个值,用prints()(空格分隔)就够了。如果你需要多行多列数据对齐成表格,用printt()(制表符分隔)更合适。
