Spark AR调用Scene.create()创建场景对象报错如何解决?
报错原因
- 循环迭代变量声明错误:你在for循环中使用
const声明迭代变量i,const声明的基础类型变量不允许重新赋值,循环执行i++时就会触发错误,调用栈指向Scene.create()属于错误定位偏差。
- 循环迭代变量声明错误:你在for循环中使用
- 材质参数传入格式错误:
Scene.create()的配置项中material字段不支持直接传入材质名称字符串,必须传入提前获取到的材质对象实例。
- 材质参数传入格式错误:
- 异步错误未捕获:你的async自执行函数没有添加错误捕获逻辑,所以会抛出
Possible unhandled promise rejection类警告。
- 异步错误未捕获:你的async自执行函数没有添加错误捕获逻辑,所以会抛出
解决方法
按照如下规则修改代码即可:
- 将for循环的迭代变量
i的声明关键词从const改为let - 提前调用
Materials.get()获取material1的实例对象,再传入Scene.create()的配置中 - 给async函数补充
.catch()块捕获异步错误,方便后续排查问题
修改后的参考代码
const Scene = require('Scene'); const Materials = require('Materials'); const D = require('Diagnostics'); (async function () { const sprites = []; // 提前获取材质实例 const material1 = await Materials.get('material1'); // 把const改为let for (let i = 0; i < 3; i++) { const dynamicSprite = await Scene.create("PlanarImage", { "name": `sprite${i}`, "width": 0.1, "height": 0.1, "x": 0, "y": 0, "hidden": true, // 传入材质实例而非字符串 'material' : material1 }); sprites.push(dynamicSprite); } // 补充错误捕获 })().catch(err => D.log('报错信息:' + err));
如果修改后仍有问题,可以检查你的Spark AR版本是否高于v85,低于该版本的旧版引擎不支持Scene.create()动态创建对象的API。
内容的提问来源于stack exchange,提问作者Zurupupz
相关产品推荐
相关产品推荐

