Script Graph

使用指南

问题诊断 / 编译、运行和日志排查

按文件、入口、编译、组件挂接、日志和节点错误的顺序排查 Script Graph 常见问题。

16

遇到“没有反应”“编译失败”“运行结果不对”时,不要先改一大片节点。按下面顺序排查,通常能很快缩小范围。

排查原则

先判断问题属于哪一层,再动手改节点:

层级典型问题最小验证方式
文件层.sgw 类型不对、没有保存、没有编译单文件保存并编译
入口层生命周期或事件没有触发入口后直接接打印
数据层查找节点、组件、资产、枚举或结构体为空打印每个关键输出
运行层分支、异步、场景切换或资源加载失败打印分支条件和完成出口

不要跨层排查。例如入口打印都没有出现时,先不要怀疑场景加载节点;数据还没打印确认时,也不要先改后面的业务分支。

1. 先确认文件和入口

检查项说明
.sgw 类型能挂场景节点的逻辑应是组件类型
入口节点加载、启动、更新、事件绑定、函数入口至少要有一个
执行线入口必须连到后续节点
保存状态修改后先保存,再编译或运行

最小确认方式:入口后面直接接“打印字符串”。

2. 确认编译结果

组件工作流需要编译后才能挂接到场景节点。编译时重点看:

  • 是否提示具体节点错误。
  • 是否提示类型不兼容。
  • 是否提示缺少目标资产、枚举、结构体或类。
  • 是否生成了组件文件。

如果项目里有很多 .sgw,可以从菜单进入“批量编译”,先筛出哪几个文件失败,再逐个打开修。

3. 确认组件是否挂接

组件工作流编译成功并不等于已经运行。还需要:

  1. 生成组件存在。
  2. 组件挂到了当前场景中的节点。
  3. 当前场景确实在预览或构建中运行。
  4. 组件所在节点没有被禁用。

如果加载事件没有打印,优先检查挂接和节点启用状态。

4. 调整日志过滤级别

Script Graph 支持日志过滤级别。排查时建议先让日志尽量完整,确认路径后再收紧。

目标建议
看用户调试输出使用打印字符串,并确认日志没有被过滤
看关键运行信息临时调高日志可见级别
发布前减少噪声清理临时打印,保留必要告警

如果你正在看 Cocos Creator 的日志文件,可以搜索 .sgw 文件名、节点名称、错误提示关键词和 Script Graph

5. 按节点边界切问题

复杂工作流不要只看最终结果。把问题拆成节点边界:

  1. 打印入口是否触发。
  2. 打印关键输入。
  3. 打印关键输出。
  4. 打印分支条件。
  5. 打印异步完成出口。

这样可以区分:

  • 入口没触发。
  • 触发了但数据为空。
  • 数据正确但分支走错。
  • 分支正确但下游节点失败。
  • 异步节点未完成或接错出口。

6. 常见错误表

现象可能原因处理
打印节点没输出入口没触发、组件没挂、日志被过滤直接在入口后接打印,检查挂接和日志级别
编译失败节点不支持当前 Flow、类型不兼容、引用失效按错误提示定位节点,先修第一条错误
运行时报空值查找节点、获取组件或加载资产结果为空打印每个中间输出
事件重复触发多次绑定且未解绑在禁用或销毁时清理绑定
资产加载失败包名、路径、类型或构建设置不匹配使用选择器,确认资源属于目标包
枚举分支不走值不是预期枚举成员打印枚举值,检查默认值和赋值节点

7. 什么时候用批量编译

适合这些场景:

  • 修改了函数库、枚举、结构体或类,想确认影响范围。
  • 发布前确认所有 .sgw 都能生成。
  • 关联插件或自定义节点变更后,想检查引用是否仍可用。
  • 多个工作流依赖同一个数据结构。

批量编译失败时,先修最基础的类型文件,例如枚举、结构体、接口和类,再修依赖它们的组件工作流。

一个完整排查例子

现象:点击首页按钮后没有进入游戏场景。

推荐顺序:

  1. 在组件加载入口后接打印,确认 HomePanel.sgw 已经运行。
  2. 在查找 StartButton 后打印节点是否为空。
  3. 在获取 Button 组件后打印组件是否为空。
  4. 在按钮点击事件后打印 Start button clicked
  5. 在场景加载前打印目标场景名。
  6. 确认 Game 场景已经进入 Cocos 构建设置。
  7. 如果以上都正确,再看 Director 节点返回或日志中的具体错误。

这个例子里的关键点是:每一步只验证一个假设。这样不会把“按钮没有绑定”和“场景名错误”混成一个模糊问题。