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

Unity测验实现每题3次答题尝试及阶梯计分功能技术求助

为Unity测验游戏实现三次答题尝试功能

核心实现思路

通过跟踪答题尝试次数,动态控制UI元素显示状态,并根据尝试阶段计算对应得分,最终完成三次尝试后的题目标签跳转。


1. 核心变量与UI引用

在你的测验管理类(如QuizManager)中添加以下代码,用于状态跟踪和UI控制:

// 当前答题尝试次数(1-3)
private int _currentAttempt = 1;
// 各尝试阶段对应得分:[首次答对, 第二次答对, 第三次答对, 全错]
private readonly int[] _attemptScores = { 30, 15, 5, 0 };

// UI元素引用(需在Inspector中赋值)
[SerializeField] private Text questionText;
[SerializeField] private GameObject[] optionButtons;
[SerializeField] private GameObject hintImage; // 第二次尝试显示的辅助图片
[SerializeField] private GameObject mediaHintContainer; // 第三次尝试的图片+音视频容器
[SerializeField] private AudioSource hintAudio; // 辅助音频组件
[SerializeField] private VideoPlayer hintVideo; // 辅助视频组件

2. 初始化与重置状态

加载新题目时重置尝试次数和UI状态:

private void LoadNewQuestion()
{
    _currentAttempt = 1;
    // 初始仅显示问题和选项
    questionText.gameObject.SetActive(true);
    foreach (var btn in optionButtons) btn.SetActive(true);
    hintImage.SetActive(false);
    mediaHintContainer.SetActive(false);
    
    // 重置音视频状态
    hintAudio?.Stop();
    hintVideo?.Stop();
    
    // 调用你现有加载题目数据的方法
    LoadQuestionContent();
}

3. 答题逻辑处理

将以下方法绑定到选项按钮的OnClick事件(注意传入对应选项的索引):

public void OnOptionSelected(int selectedIndex)
{
    bool isCorrect = CheckAnswerIsValid(selectedIndex); // 替换为你现有判断正确答案的逻辑
    
    if (isCorrect)
    {
        // 根据当前尝试次数加分
        AddScore(_attemptScores[_currentAttempt - 1]);
        // 延迟1秒跳转到下一题(可根据需求调整)
        Invoke(nameof(LoadNewQuestion), 1f);
        return;
    }

    // 答错后推进尝试次数
    _currentAttempt++;
    if (_currentAttempt > 3)
    {
        // 三次全错,得0分并跳转
        AddScore(_attemptScores[3]);
        Invoke(nameof(LoadNewQuestion), 1f);
        return;
    }

    // 根据尝试次数显示对应辅助内容
    UpdateHintDisplay();
}

4. 辅助内容显示控制

private void UpdateHintDisplay()
{
    switch (_currentAttempt)
    {
        case 2:
            // 显示普通辅助图片
            hintImage.SetActive(true);
            break;
        case 3:
            // 切换为带媒体的辅助内容并播放
            hintImage.SetActive(false);
            mediaHintContainer.SetActive(true);
            hintAudio?.Play();
            hintVideo?.Play();
            break;
    }
}

针对Biologija场景的适配步骤

  1. 打开MojKviz/Biologija场景,找到场景中负责测验逻辑的 GameObject
  2. 将上述代码整合到现有测验管理脚本中,或新建脚本挂载到该物体上
  3. 在Inspector面板中,将场景内的对应UI元素拖拽到脚本的变量引用中:
    • 问题文本组件 → questionText
    • 4个选项按钮 → optionButtons数组
    • 第二次尝试的辅助图片 → hintImage
    • 包含图片+音视频的容器物体 → mediaHintContainer
    • 按需绑定hintAudio和hintVideo组件
  4. 为每个选项按钮的OnClick事件绑定OnOptionSelected方法,并传入对应选项的索引(如0-3)

补充说明

  • 确保你的AddScore(int score)方法能正确累加分数到全局得分系统
  • 音视频资源需提前导入Unity项目,并设置正确的播放参数
  • 可自行添加答错时的视觉反馈(如按钮变色、提示文字)优化体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:55:02