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

蛇游戏达成新高分时,如何让音效播放代码仅单次执行?

解决蛇游戏新高分音效仅单次播放的问题

嘿,这个场景我做小游戏时也碰到过!你现在的代码逻辑是只要当前分数超过旧高分,就会执行包括播放音效在内的所有操作——这就导致玩家分数持续上涨(比如连续吃好几个食物)时,音效反复播放,完全不符合“仅首次达成新高分播放”的需求。

这里的核心思路是加一个状态标记,用来记录我们是否已经播放过新高分的音效了,具体实现步骤如下:

1. 添加状态标记变量

在你的类里(比如游戏主逻辑类或者高分管理类)添加一个布尔类型的成员变量,初始值设为false,用来标记音效是否已经播放过:

private bool hasPlayedNewHighScoreSound = false;

2. 修改原有判断逻辑

调整你原来的代码,把音效播放的逻辑放在一个额外的判断里:只有当分数超过旧高分且还没播放过音效时,才播放音效,同时把标记设为true;如果只是分数继续刷新新高但已经播放过音效,就只更新分数和UI,不再触发音效。

修改后的完整代码如下:

if (Settings.Score > highScore.oldHighSocre)
{
    highScore.newHighScore = Settings.Score;
    highScore.oldHighSocre = highScore.newHighScore;
    label5.Text = highScore.newHighScore.ToString();
    
    // 仅在首次达成新高分时播放音效
    if (!hasPlayedNewHighScoreSound)
    {
        highScore.congrats.Play();
        hasPlayedNewHighScoreSound = true;
    }
}

3. 别忘了重置标记!

如果你的游戏有重新开始的功能,一定要在游戏重启的时候把hasPlayedNewHighScoreSound重置回false,不然下一局玩家达成新高分的时候,音效就不会再播放啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:16:30