蛇游戏达成新高分时,如何让音效播放代码仅单次执行?
解决蛇游戏新高分音效仅单次播放的问题
嘿,这个场景我做小游戏时也碰到过!你现在的代码逻辑是只要当前分数超过旧高分,就会执行包括播放音效在内的所有操作——这就导致玩家分数持续上涨(比如连续吃好几个食物)时,音效反复播放,完全不符合“仅首次达成新高分播放”的需求。
这里的核心思路是加一个状态标记,用来记录我们是否已经播放过新高分的音效了,具体实现步骤如下:
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
相关产品推荐
相关产品推荐

