Unity中if语句能否设置多个条件?如何正确分隔多条件?
Unity C# 多条件if语句的正确写法
C# 的 if 语句完全支持多个条件,但不能用逗号分隔,得用逻辑运算符来组合条件。你的需求是两个条件同时满足才执行代码:玩家进入触发器、音效还没播放过,所以应该用 &&(逻辑与)运算符——只有两个条件都为 true 时,才会进入 if 块。
你原来用的逗号是 C# 里的逗号运算符,它的逻辑是先执行左边的表达式,然后直接返回右边表达式的结果,相当于完全忽略了玩家标签的判断,只看 !alreadyPlayed,这显然不符合你的需求。
修改后的完整代码如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class soundspPlay : MonoBehaviour { public AudioSource firstsound; public AudioSource secondsound; public bool alreadyPlayed = false; void OnTriggerEnter(Collider collider) { // 用 && 组合两个条件,同时推荐用 CompareTag 替代直接比较标签 if (collider.gameObject.CompareTag("Player") && !alreadyPlayed) { firstsound.Play(); secondsound.Play(); alreadyPlayed = true; } } }
额外提个小优化:用 CompareTag("Player") 比直接写 collider.gameObject.tag == "Player" 更好,一是性能略高,二是Unity编辑器会自动校验标签是否存在,能避免拼写错误导致的bug。
内容的提问来源于stack exchange,提问作者Communist Doggo
相关产品推荐
相关产品推荐

