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

AS3如何实现特定分数仅触发对应Portal生成,避免批量触发?

问题解决方法

你的问题核心在于未限制触发逻辑的执行次数,或是当分数存在跳跃式增长时(虽然你代码里是score += 1,但用else if能彻底避免多条件同时触发的可能),导致不符合预期的重复生成或批量生成。

修复方案一:用else if替代独立if

将多个独立的if改为else if结构,确保同一时间只会执行第一个匹配的条件,不会同时触发多个传送门生成逻辑:

score += 1;
score_TF.text = String(score);

if (score == 5)
{
    newPortal();
    warpsound.play();
    portal.visible = true;
}
else if (score == 10)
{
    newPortal_2();
    warpsound.play();
    portal2.visible = true;
}
else if (score == 15)
{
    newPortal_3();
    warpsound.play();
    portal3.visible = true;
}

修复方案二:添加触发标记(彻底杜绝重复生成)

如果你的代码是在循环/每帧执行的逻辑里(比如Unity的Update函数),即便分数只达到目标值一次,也会重复执行生成逻辑。这时需要给每个传送门添加“是否已生成”的标记变量:

// 先定义标记变量,初始值设为false
bool portal1Generated = false;
bool portal2Generated = false;
bool portal3Generated = false;

// 分数更新与生成逻辑
score += 1;
score_TF.text = String(score);

if (score == 5 && !portal1Generated)
{
    newPortal();
    warpsound.play();
    portal.visible = true;
    portal1Generated = true; // 标记为已生成,后续不再触发
}
else if (score == 10 && !portal2Generated)
{
    newPortal_2();
    warpsound.play();
    portal2.visible = true;
    portal2Generated = true;
}
else if (score == 15 && !portal3Generated)
{
    newPortal_3();
    warpsound.play();
    portal3.visible = true;
    portal3Generated = true;
}

这样每个传送门只会被生成一次,完全符合你“达到特定分数时仅生成对应传送门”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:55:12