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

Unity QuizGame如何从500道题库中每轮随机抽取50道题进行游戏

Unity QuizGame 每轮随机抽取指定题目修改方案

首先在你项目的Quiz管理脚本中新增每轮题目数配置,后续可以按需调整数值:

// 配置每轮游戏出题量,当前设置为每轮50道
private const int *QUESTIONS_PER_ROUND* = 50;

接下来修改你提供的GetRandomQuestionIndex方法,同时修复原有代码的逻辑错误:

int GetRandomQuestionIndex()
{
    var random = 0;
    // 原有逻辑为判断是否做完所有题库,现在改为判断是否做完本轮指定题量
    if (FinishedQuestions.Count < QUESTIONS_PER_ROUND)
    {
        do
        {
            random = UnityEngine.Random.Range(0, Questions.Length);
            // 修复原代码硬编码错误:原逻辑误写为判断是否包含索引10,改为判断当前随机到的题目是否已作答过
        } while (FinishedQuestions.Contains(random) || random == currentQuestion);
    }
    else
    {
        // 返回-1作为本轮题目已做完的标识
        return -1;
    }
    return random;
}

然后调整题目获取逻辑,新增本轮结束的处理逻辑:

Question GetRandomQuestion()
{
    var randomIndex = GetRandomQuestionIndex();
    // 收到-1标识代表本轮所有题目已作答完成
    if(randomIndex == -1)
    {
        HandleRoundEnd();
        return null;
    }
    currentQuestion = randomIndex;
    // 注意如果原有逻辑已经在其他位置添加已做题目记录,这里可以删掉下一行避免重复添加
    FinishedQuestions.Add(randomIndex);
    return Questions[currentQuestion];
}

// 本轮结束处理方法
private void HandleRoundEnd()
{
    // 此处可以添加你原有的结算、得分展示等业务逻辑
    // 清空本轮已作答记录,下次开新轮就会重新从全量题库随机抽题
    FinishedQuestions.Clear();
    currentQuestion = -1;
}

注意事项

  • 如果你的项目已经存在现成的游戏结束触发逻辑,只需要把原有判断条件FinishedQuestions.Count == Questions.Length改为FinishedQuestions.Count == QUESTIONS_PER_ROUND即可
  • 每次启动新一轮游戏前,确保已经清空FinishedQuestions集合,避免用上一轮的已做记录过滤题目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:15:06