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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:49:47