You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark AR中无法将脚本变量传递至Patches补丁的问题

问题根因

警告提示已经把核心问题说的很明确了:脚本向Patches传值时,要求补丁编辑器内必须存在名称完全匹配、类型完全对应的From Script接收补丁,否则脚本发出去的值没有接收端,自然不会有响应。
除此之外你的代码还有一个类型不匹配的问题:你定义的是仅含x、y属性的二维对象,却调用了对应四维向量的setVector方法,就算建了补丁类型不对也收不到值。

修复步骤
  • 配置Patches端接收补丁
    1. 打开Patches补丁编辑器,在空白区域右键,选择添加From Script补丁
    2. 选中刚添加的补丁,在右侧属性检查面板中,将输出端口的名称修改为scale,注意名称大小写必须和代码里的参数完全一致,Spark AR对名称大小写敏感
    3. 将该端口的输出类型修改为Vector2,不要使用默认的Vector类型
  • 修正脚本代码
    将对应传值方法替换为匹配Vector2类型的setVector2,修正后完整代码如下:
const Patches = require('Patches');

(async function () {
    const scale = { x: 0.5, y: 0.5 };
    // 方法名、参数名必须和补丁端配置完全对齐
    await Patches.inputs.setVector2('scale', scale);
})();
  • 验证效果
    保存脚本后回到编辑器,将From Script补丁输出的scale端口连接到需要控制的对象缩放属性上,控制台的警告会消失,值可以正常传递生效。
避坑说明

Spark AR脚本向Patches传值必须严格遵守对齐规则,否则都会触发同类警告:

  • 代码里调用的set方法、代码里传的参数名、Patches端From Script补丁的端口名、补丁端口的类型四者必须完全匹配
  • 不同类型对应的set方法参考:
    • 布尔值:setBoolean(),补丁类型选Boolean
    • 单数值(比如透明度、旋转角度):setScalar(),补丁类型选Number
    • 二维值(比如2D缩放、屏幕坐标):setVector2(),补丁类型选Vector2
    • 三维值(比如3D位置、旋转):setVector3(),补丁类型选Vector3
    • 四维值(比如颜色、四维向量):setVector4(),补丁类型选Vector4/Color
  • 所有Patches传值操作必须放在异步函数中用await调用,不要直接在全局作用域执行,会因为模块加载时序问题导致传值失败。

内容的提问来源于stack exchange,提问作者Mystery04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:00:24