渲染 Godot 项目的场景文件 (.tscn) 中每个节点的类型化描述。提供一个名为 node()
的访问函数来获取对节点的引用。此工具旨在与 Miguel de Icaza 的 SwiftGodot 绑定一起使用,并生成依赖于 SwiftGodot 的 Swift 代码。
在 SwiftGodot 中,节点引用如下所示
let marker = getNodeOrNull("Sprite2D/Marker2D") as? Marker2D
这要求程序员确保节点路径及其类型正确。如果存在不匹配,则 marker
变量将为 nil。
如果我们在该项目上运行 SceneGen,我们的根 Player
类型将被扩展为每个节点的类型化描述。 然后可以通过类型安全的方式访问这些节点
let marker = node(.sprite2D_marker2d)
程序员不再负责维护类型和路径。这将减少运行时错误和崩溃,在您的 IDE 中提供有用的代码完成建议,并允许更快的迭代周期。
我仍在研究如何运行此工具的 Swift PM 方案,但在过渡期间,以下是一种有效的方法
brew install mint
)。Mintfile
的文件添加到您的项目,并在其中放入 PadraigK/SceneGen@0.1.2
(或任何最新的发布标签)。mint bootstrap
(需要一段时间,大约 5 分钟)mint run scenegen <project-path> <output-path>
运行代码生成——请注意,每次运行代码生成之前,输出路径都将被删除。 如果您删除或重命名场景,则必须这样做才能清理。建议将 SceneGen 与 watcher 一起使用,例如 entr,它可以用于在任何场景文件更改时重新运行生成。
我建议创建一个如下所示的 shell 脚本
#!/bin/zsh
# loop because the `-d` flag on `entr` makes it exit when it
# detects a new or deleted file in any of the folders its watching,
# otherwise it would only detect modifications to existing files
while sleep 0.1; do
find ../ -name '*.tscn' -not -path '*/.*' | entr -d -s 'mint run <project-path> <output-path>'
done
然后在您工作时将其留在终端窗口中运行。
enemy.playAnimation(.explode)
let jump = Input.isActionJustPressed(.jump)