prints
2026/4/14大约 3 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — prints
prints
定义
prints() 和 print() 非常相似,都是用来在控制台输出信息的。唯一的区别是:prints() 会在每个参数之间自动加一个空格。
想象你在写一句话,print() 像是把几个词直接粘在一起("你好世界"),而 prints() 会在每个词之间自动加空格("你好 世界")。名字里的 s 就代表 "space"(空格)。
函数签名
C#
// C# 中没有直接等价的 prints 函数
// 请用 string.Join 手动拼接空格
GD.Print(string.Join(" ", values));GDScript
func prints(...) -> void参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
...(可变参数) | Variant(任意类型) | 否 | 可以传入任意数量、任意类型的值,所有值会被转换成字符串后用空格分隔输出 |
返回值
无返回值(void)。此函数仅用于在控制台输出信息。
代码示例
基础用法:用空格分隔输出
C#
using Godot;
public partial class PrintsExample : Node
{
public override void _Ready()
{
// 对比 print 和 prints 的效果
GD.Print("玩家", "分数", 100);
// 运行结果: 玩家分数100
// prints 的等价写法:手动加空格
GD.Print(string.Join(" ", "玩家", "分数", 100));
// 运行结果: 玩家 分数 100
}
}GDScript
extends Node
func _ready():
# 对比 print 和 prints 的效果
print("玩家", "分数", 100)
# 运行结果: 玩家分数100
prints("玩家", "分数", 100)
# 运行结果: 玩家 分数 100实际场景:输出调试表格数据
C#
using Godot;
public partial class Inventory : Node
{
public override void _Ready()
{
// 用空格分隔输出物品信息
var items = new[] { ("生命药水", 5, "恢复50HP"), ("铁剑", 1, "攻击+10"), ("魔法卷轴", 3, "释放火球") };
GD.Print("物品名称 数量 描述");
GD.Print("-----------------------------");
foreach (var (name, count, desc) in items)
{
GD.Print(string.Join(" ", name, "x" + count, desc));
}
// 运行结果:
// 物品名称 数量 描述
// -----------------------------
// 生命药水 x5 恢复50HP
// 铁剑 x1 攻击+10
// 魔法卷轴 x3 释放火球
}
}GDScript
extends Node
func _ready():
# 用空格分隔输出物品信息
var items = [
["生命药水", 5, "恢复50HP"],
["铁剑", 1, "攻击+10"],
["魔法卷轴", 3, "释放火球"]
]
prints("物品名称", "数量", "描述")
print("-----------------------------")
for item in items:
prints(item[0], "x" + str(item[1]), item[2])
# 运行结果:
# 物品名称 数量 描述
# -----------------------------
# 生命药水 x5 恢复50HP
# 铁剑 x1 攻击+10
# 魔法卷轴 x3 释放火球进阶用法:构建可读的调试日志
C#
using Godot;
public partial class CombatLog : Node
{
private void LogAttack(string attacker, string target, int damage, bool isCritical)
{
// 输出格式化的战斗日志
string critText = isCritical ? "[暴击!]" : "";
GD.Print(string.Join(" ", "[战斗]", attacker, "攻击了", target, "造成", damage, "点伤害", critText));
}
public override void _Ready()
{
LogAttack("勇者", "史莱姆", 25, false);
// 运行结果: [战斗] 勇者 攻击了 史莱姆 造成 25 点伤害
LogAttack("勇者", "魔王", 120, true);
// 运行结果: [战斗] 勇者 攻击了 魔王 造成 120 点伤害 [暴击!]
}
}GDScript
extends Node
func log_attack(attacker: String, target: String, damage: int, is_critical: bool) -> void:
# 输出格式化的战斗日志
var crit_text = "[暴击!]" if is_critical else ""
prints("[战斗]", attacker, "攻击了", target, "造成", damage, "点伤害", crit_text)
func _ready():
log_attack("勇者", "史莱姆", 25, false)
# 运行结果: [战斗] 勇者 攻击了 史莱姆 造成 25 点伤害
log_attack("勇者", "魔王", 120, true)
# 运行结果: [战斗] 勇者 攻击了 魔王 造成 120 点伤害 [暴击!]注意事项
与
print()的唯一区别就是空格:prints()在每两个参数之间自动插入一个空格,而print()是直接拼接。如果你不需要空格分隔,就用print()。C# 没有直接等价函数:在 C# 中,请使用
string.Join(" ", values)配合GD.Print()来实现相同效果。末尾也会加空格:
prints()在最后一个参数后面不会额外添加空格,输出效果是干净的。
