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

Spark AR Native UI Picker如何禁用选中项外的其他选项

Spark AR 基于Native UI Picker实现选项彻底禁用方案

你当前遇到的隐形碰撞bug,本质是Spark AR场景对象的hidden属性仅控制渲染可见性,不会自动停用碰撞体、挂载脚本、动画等运行逻辑,仅切换可见性必然会出现后台逻辑残留。

实现思路

不要单独控制每个元素的显隐,给每个选项配置独立的根父节点——单个选项对应的所有敌人、碰撞体、特效、逻辑脚本全部挂载到对应根节点下,方便统一管控。选中Picker选项时,除了显隐切换,同步管控所有运行态属性,从根源停掉非选中项的逻辑。

具体操作步骤

  • 提前在场景中整理节点结构:4个选项分别对应option0_root、option1_root、option2_root、option3_root四个空父节点,对应Native UI Picker的0-3索引,把每个选项的所有游戏资源放到对应父节点下
  • 在脚本中绑定4个根节点的引用,监听Native UI Picker的选中索引变化事件
  • 选中事件触发后遍历所有根节点,对选中/非选中项分别做状态处理:
    • 选中项:恢复正常位置、设为可见、开启所有碰撞体、启用所有挂载脚本、播放动画/特效
    • 非选中项:设为不可见、直接关闭所有碰撞体的检测开关、禁用所有挂载脚本、停止所有动画/特效、将节点坐标移出玩家碰撞范围(比如Y轴设为-1000,做兜底防护)

可直接复用的代码参考

const Scene = require('Scene');
const NativeUI = require('NativeUI');
const picker = NativeUI.picker;

// 脚本属性面板绑定4个选项根节点
const optionNodes = [
  await Scene.root.findFirst('option0_root'),
  await Scene.root.findFirst('option1_root'),
  await Scene.root.findFirst('option2_root'),
  await Scene.root.findFirst('option3_root')
];

// Picker选中监听
picker.selectedIndex.monitor().subscribe((evt) => {
  const activeIndex = evt.newValue;
  optionNodes.forEach((node, idx) => {
    // 获取当前节点下的所有功能组件
    const colliders = node.getComponents('Component.Collider');
    const logicScripts = node.getComponents('Component.Script');
    const anims = node.getComponents('Component.AnimationPlayable');

    if (idx === activeIndex) {
      // 激活当前选项
      node.hidden = false;
      node.transform.y = 0;
      colliders.forEach(col => col.enabled = true);
      logicScripts.forEach(s => s.enabled = true);
      anims.forEach(a => a.play());
    } else {
      // 彻底停用非选中选项
      node.hidden = true;
      node.transform.y = -1000;
      colliders.forEach(col => col.enabled = false);
      logicScripts.forEach(s => s.enabled = false);
      anims.forEach(a => a.stop());
    }
  })
})

避坑提示

  • 如果选项逻辑包含动态生成的敌人/道具,停用非选中项时要同步清空对应对象池的所有生成实例,避免残留对象触发碰撞
  • 不要零散控制单个元素的状态,所有同选项资源挂在统一根节点下,能避免漏关组件导致的隐形bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 11:09:29