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

Unity3D卡牌游戏检测_CardList列表是否存在3张同类型卡牌的实现方案

解决方案

方案1:字典计数法(推荐,完全兼容后续新增卡牌,无维护成本)

该方案不依赖_CardList的排序规则,仅需一次遍历即可完成检测,新增卡牌类型时无需修改检测逻辑:

void CardChecking()
{
    // 手牌不足3张直接跳过检测
    if (_CardList.Count < 3) return;
    
    Dictionary<CardType, int> typeCountDic = new Dictionary<CardType, int>();
    foreach (var card in _CardList)
    {
        // 统计对应类型的卡牌数量
        if (typeCountDic.ContainsKey(card._cardType))
        {
            typeCountDic[card._cardType]++;
        }
        else
        {
            typeCountDic[card._cardType] = 1;
        }
        
        // 检测到达到3张直接触发操作,提前终止遍历
        if (typeCountDic[card._cardType] == 3)
        {
            // 建议提前配置CardType和场景ID的映射字典,避免硬编码或者ToString()的拼写风险
            // 示例:SceneManager.LoadScene(cardTypeSceneMapping[card._cardType]);
            SceneManager.LoadScene(card._cardType.ToString());
            
            // 可选:触发操作后移除这三张卡牌,避免重复触发
            // _CardList.RemoveAll(c => c._cardType == card._cardType);
            return;
        }
    }
}

如果需要提前配置卡牌类型和操作/场景的映射关系,可以全局维护一个静态字典,新增卡牌时仅需修改映射配置即可:

// 全局配置,仅需在新增卡牌时维护此处
public static Dictionary<CardType, int> CardTypeSceneMap = new Dictionary<CardType, int>()
{
    {CardType.A, 1},
    {CardType.B, 2},
    {CardType.C, 3},
    // 后续新增卡牌直接加一行即可
};

方案2:排序场景下的轻量修复(仅适用于_CardList已按类型排序的场景)

原有逻辑越界是因为循环上限设置错误,只需要把循环的终止条件改为i < _CardList.Count - 2即可保证不会访问到超出列表范围的索引:

void CardChecking()
{
    // 手牌不足3张直接跳过
    if (_CardList.Count < 3) return;
    
    // 循环上限为Count-2,i最大为Count-3,i+2最大为Count-1,不会越界
    for (int i = 0; i < _CardList.Count - 2; i++)
    {
        if(_CardList[i]._cardType == _CardList[i+1]._cardType && _CardList[i + 1]._cardType == _CardList[i+2]._cardType)
        {
            SceneManager.LoadScene(_CardList[i]._cardType.ToString());
            // 触发后直接返回,避免重复检测
            return;
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:54:04