import { _decorator, Component, Node, tween, Vec3 } from 'cc'; const { ccclass, property, executeInEditMode } = _decorator; @ccclass('OutArea') @executeInEditMode export class OutArea extends Component { @property(Node) outNodes: Node = null!; // 直接使用outNodes的子节点管理 get cups() { return this.outNodes.children; } start() { } update(deltaTime: number) { } // 修改排列方法为异步 async arrangeCups() { const startX = 40; const spacing = 80; // 过滤掉已销毁的节点 const validCups = this.cups.filter(cup => cup.isValid); await new Promise(resolve => { let completed = 0; validCups.forEach((cup, index) => { const targetX = startX + index * spacing; tween(cup) .to(0.3, { position: new Vec3(targetX, 0, 0) }, { easing: 'sineOut' }) .call(() => { if (++completed === validCups.length) resolve(); }) .start(); }); // 处理无动画的情况 if (validCups.length === 0) resolve(); }); } addCup(cup: Node) { cup.setParent(this.outNodes); this.arrangeCups(); } removeCup(cup: Node) { cup.removeFromParent(); this.arrangeCups(); } getCups() { return this.cups; } }