2026 年 10 月 8 日更新 Creator 后,原有项目在新版构建发布面板中遇到了两个问题:Bundle 较多时,整份配置表单校验失败;解决表单体积问题后,扩展中的资源选择器仍无法使用,构建按钮被禁用。
目前通过插件增加菜单、打开编辑器保留的旧版构建面板,暂时恢复了原来的操作方式。下面整理环境、现象和本机排查结果,供官方定位。
环境
| 项目 | 信息 |
|---|---|
| 操作系统 | macOS |
| 编辑器显示版本 | Cocos Creator 3.8.8 |
| 更新及问题发现日期 | 2026-10-08 |
| 复现平台 | 支付宝小游戏 |
| 项目 Bundle 数量 | 127 个 |
| 项目构建扩展 | 使用 contributions.builder 注册的自定义构建扩展 |
| 新版面板模块 |
builder-ui,包版本 1.1.16
|
| 面板构建时间 | 安装包记录为 2026-09-30 23:22:22
|
| 安装包模块标识 |
repack.json 中 builder-ui 为 3.8.8-backport.1
|
以下结论针对这次更新后本机安装包中的新版面板,尚未验证其他平台及其他安装包版本。
问题一:Bundle 较多时,整份配置表单校验失败
打开现有支付宝构建任务后,面板提示:
Configuration display failed validation. Reload the panel after updating the plugin. Saving and building from this form are disabled.
配置区无法正常使用,保存和构建被禁用。提示只建议更新插件、重新加载面板,没有指出具体失败字段或体积限制,用户很难判断该修改哪里。
本机排查结果
新版面板使用的协议校验中存在 MAX_BYTES = 65536,按 JSON 序列化后的 UTF-8 字节数限制协议对象大小。
对本项目的表单进行采样,结果如下:
| 项目 | 采样结果 |
|---|---|
| 表单字段数量 | 48 个 |
| Bundle 列表条目 | 127 个 |
| 原始表单 JSON 大小 | 71,201 字节,约 69.5 KiB |
| 协议大小上限 | 65,536 字节,即 64 KiB |
| 校验拒绝项 | form-envelope |
其中 Bundle 列表字段约占 34 KB,包含各条目的名称、资源路径备注及编辑操作等信息。项目并没有新增 Bundle,只是更新后改用新版面板,就触发了这项限制。
排查时曾临时精简 Bundle 列表的显示信息:对名称唯一的条目省略完整资源路径备注,并缩短重复的编辑按钮标签,保留全部 127 个 Bundle 及原有选择值、操作标识。表单缩小到 63,619 字节后,采样中的校验拒绝项变为 [],配置能够显示。
这证明精简显示信息能绕过本次体积问题,但项目规模再增长仍可能触发限制。该临时补丁已经撤掉,最终选择使用旧版面板。
复现条件
在本项目中,更新后打开包含 127 个 Bundle、同时注册了自定义构建选项的现有任务即可复现。127 不是已确认的固定阈值,实际是否超限还取决于 Bundle 名称、路径长度以及其他扩展选项的数量和内容。暂未制作独立的最小复现项目。
问题二:自定义构建选项中的资源选择器未适配
将表单压缩到能够通过校验后,“应用配置 JSON”仍显示:
待补齐的控件
This Creator control needs a dedicated interaction adapter
This compound field contains a Creator-specific control
这个字段使用的是 Creator 的 ui-asset 控件,用于选择 cc.JsonAsset。插件中相关配置结构如下,已省略无关字段:
channelConfig: {
type: 'object',
label: '构建配置管理',
default: {
channelConfigJson: '',
},
itemConfigs: {
channelConfigJson: {
label: '应用配置 JSON',
default: '',
render: {
ui: 'ui-asset',
attributes: {
type: 'cc.JsonAsset',
droppable: 'cc.JsonAsset',
},
},
},
},
}
另外,“首屏图”字段也使用 ui-asset,资源类型为 cc.SpriteFrame,同样受影响。
本机诊断中,包含这两个资源选择器的配置组被标记为不支持,新版面板无法完成配置控件的适配检查,构建按钮仍被禁用。因此,表单体积超限和资源选择器未适配是两个独立问题,单独解决体积问题还不能恢复新版面板的构建操作。
临时处理:通过插件菜单打开旧版构建面板
本机安装包仍保留 builder.old 面板,可以在编辑器扩展主进程中调用:
Editor.Panel.open('builder.old');
我们在现有插件中增加了“项目 → 打开旧版构建发布”菜单。以下内容合并到插件原有配置即可,保留已有菜单和消息:
package.json 的 contributions 中增加:
{
"menu": [
{
"path": "i18n:menu.project",
"label": "打开旧版构建发布",
"message": "open-legacy-builder"
}
],
"messages": {
"open-legacy-builder": {
"methods": ["openLegacyBuilder"]
}
}
}
插件主进程入口的 methods 中增加:
exports.methods = {
// 合并到原有 methods,保留已有方法。
openLegacyBuilder() {
return Editor.Panel.open('builder.old');
},
};
编译并重新加载插件后,已实际点击菜单验证:能够打开旧版构建发布面板,现有构建任务仍在。这个临时方式依赖当前安装包保留旧面板。
希望官方改进的地方
- 处理较大项目的表单体积。 Bundle 列表可以按需加载或分页,避免显示信息累计超过整份表单上限后,直接禁用保存和构建。
-
补齐现有扩展控件的兼容。 尤其是对象分组中的
ui-asset,以及cc.JsonAsset、cc.SpriteFrame等资源选择类型。 - 提供明确的旧版入口。 新版控件尚未覆盖原有扩展能力时,希望用户能从菜单直接切回旧面板,继续使用现有项目。
- 让错误提示能指导排查。 校验失败时显示具体字段、失败原因和实际大小;控件未适配时明确说明缺失能力,避免只有笼统的“更新插件后重载”。
以上为本机实际遇到的现象及诊断结果。如果需要进一步定位,可以继续提供相关字段声明和采样信息。
