SuperAPI AI 工具集

godot-gdscript-mastery

编程与开发

查看项目

更新于 10-15 18:28

技能介绍

用途

本技能为编写高性能、可维护的 GDScript 提供专家级指导。它并非风格指南的复述,而是围绕 Godot 开发中的“雷区”给出决策树,帮助开发者在实现具体功能时做出正确选择。适用于代码审查、重构热点路径,或制定项目编码标准。

主要能力

技能围绕五个核心指令组织,每个指令包含雷区判断与强制参考脚本:

  1. 强类型与性能:判断热点路径是否仍为 Variant、_process 中是否使用泛型数学、是否缺少绿色安全线,并给出类型注解、类型化集合、类型化数学辅助函数(absf、ceili、clampf)等决策。
  2. 信号架构:子节点需要父节点响应时应向上发射信号而非调用父方法;跨脚本载荷应使用类型化信号定义;连接应优先在 _ready() 中完成而非编辑器隐式连线。
  3. 节点访问与生命周期安全:需要子节点时使用 @onready 或 %UniqueName,绝不在 _init() 中获取;场景实例化节点带构造参数时应使用 @export 注入;每帧路径查找应缓存一次,绝不在 _process 中使用 $ 或 get_node。
  4. Callable 与信号(一等公民):回调需要额外上下文时使用 Callable.bind();丢弃未使用的信号参数时使用 Callable.unbind(n);一次性超时逻辑可用内联 lambda。
  5. 异步、静态变量与安全集合:无线程的序列计时器使用 await 链;避免 Autoload 臃肿时使用 static var;迭代 Dictionary 时先克隆键再删除。

技能还列出了明确的“绝不要做”清单,例如:绝不在同一变量上同时使用 @onready 和 @export;绝不在迭代 Dictionary 时修改其大小;绝不使用字符串形式的 connect();绝不覆盖非虚的原生引擎方法;绝不在 _process 中使用动态 get_node() 或 $;绝不使用 Parent.method() 调用;绝不使用 is 后接硬转换;绝不用 print() 做生产调试;绝不在 _ready() 中预加载巨大资源;绝不在 Autoload 中使用全局变量而 static var 已足够。

使用方式

技能提供了一份脚本目录,按需打开对应脚本,而非全部预加载。脚本包括:typed_collections_mastery.gd(类型化 Array/Dictionary)、functional_lambda_logic.gd(reduce/all/any)、advanced_lambdas.gd(高阶 Callable)、safe_type_casting.gd(as + null 检查)、typed_signal_definitions.gd(类型化信号边界)、callable_binding_context.gd(bind() 上下文注入)、unbind_signal_args.gd(unbind() 参数裁剪)、await_sequence_manager.gd(非阻塞 await 流)、array_preallocation_perf.gd(resize() 预分配)、static_var_singleton_alt.gd(轻量全局状态)、dictionary_safe_iteration.gd(安全边迭代边删除)、type_checker.gd(EditorScript 类型审计)、performance_analyzer.gd(EditorScript 热点扫描)、signal_architecture_validator.gd(EditorScript 信号向上检查)。

技能还给出快速雷区提示:不确定键是否存在时优先使用 dict.get("key", default);对关键 UI/节点启用“Access as Scene Unique Name”并通过 %Name 读取;脚本布局顺序为 extends → class_name → signals/enums/consts → exports/onready → lifecycle → public → _private。

适用场景

  • 对 GDScript 代码进行审查,发现类型、信号、生命周期方面的隐患。
  • 重构性能热点路径,减少每帧开销。
  • 制定团队或项目的 GDScript 编码标准。
  • 在实现具体功能时,按核心指令查找对应的强制脚本作为参考。

限制

  • 不适用于通用散文风格或 Godot 引擎版本升级(3→4 / 4.x 跳转),后者由 godot-version-migration 技能处理。
  • 不应预加载所有脚本,只打开当前实现的核心指令对应的强制指针。
  • EditorScript 工具(type_checker、performance_analyzer、signal_architecture_validator)不应被视为运行时游戏代码。
  • 技能本身不提供收费、价格或平台信息,这些事实暂未提供。