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

Unity C# 问答游戏:每题3次尝试功能实现求助

问答游戏3次尝试机制实现方案

1. 新增尝试次数追踪变量

在核心问题管理脚本中添加全局变量,用于记录当前问题的尝试次数:

// 追踪当前问题的尝试次数(0=首次答题,1=第2次尝试,2=第3次尝试)
private int currentQuestionAttempts = 0;

2. 修改答错处理逻辑

替换原有的“答错直接跳题”逻辑,改为以下流程:

public void OnAnswerIncorrect()
{
    currentQuestionAttempts++;

    switch(currentQuestionAttempts)
    {
        case 1:
            // 第1次答错:显示文本+图片
            ShowQuestionText();
            ShowQuestionImage();
            HideQuestionVideo(); // 确保视频不显示
            break;
        case 2:
            // 第2次答错:显示文本+图片/视频(根据问题配置选择)
            ShowQuestionText();
            ShowQuestionImage();
            if(CurrentQuestion.HasVideo)
                ShowQuestionVideo();
            break;
        case 3:
            // 第3次答错:得0分,跳转下一题
            AddScore(0);
            ResetQuestionState();
            LoadNextQuestion();
            break;
    }
}

3. 修改答对处理逻辑

根据当前尝试次数计算对应分值:

public void OnAnswerCorrect()
{
    int scoreToAdd = currentQuestionAttempts switch
    {
        0 => 50,   // 首次答对
        1 => 30,   // 第2次答对
        2 => 15,   // 第3次答对
        _ => 0
    };

    AddScore(scoreToAdd);
    ResetQuestionState();
    LoadNextQuestion();
}

4. 重置问题状态

每次切换问题时,重置尝试次数和UI状态:

private void ResetQuestionState()
{
    currentQuestionAttempts = 0;
    // 重置UI:仅显示文本,隐藏图片和视频
    ShowQuestionText();
    HideQuestionImage();
    HideQuestionVideo();
}

5. 问题数据结构扩展

确保每个问题的数据类包含媒体资源引用和是否有视频的标记(如果原脚本没有的话):

[System.Serializable]
public class Question
{
    public string questionText; // 问题文本(塞尔维亚语)
    public Sprite questionImage; // 问题图片
    public VideoClip questionVideo; // 问题视频
    public bool hasVideo; // 是否存在视频资源
    public List<string> correctAnswers; // 正确答案列表
    public List<string> incorrectAnswers; // 错误答案列表
}

6. UI控制方法补充

确保脚本中有对应的UI显示/隐藏方法,比如:

private void ShowQuestionText()
{
    questionTextPanel.SetActive(true);
    questionText.text = CurrentQuestion.questionText;
}

private void HideQuestionText() => questionTextPanel.SetActive(false);

private void ShowQuestionImage()
{
    questionImagePanel.SetActive(true);
    questionImage.sprite = CurrentQuestion.questionImage;
}

private void HideQuestionImage() => questionImagePanel.SetActive(false);

private void ShowQuestionVideo()
{
    questionVideoPanel.SetActive(true);
    questionVideoPlayer.clip = CurrentQuestion.questionVideo;
    questionVideoPlayer.Play();
}

private void HideQuestionVideo()
{
    questionVideoPanel.SetActive(false);
    questionVideoPlayer.Stop();
}

针对塞尔维亚语脚本的适配说明

如果原有变量或方法名是塞尔维亚语,只需将上述示例中的英文标识符替换为对应塞尔维亚语名称即可,比如:

  • currentQuestionAttempts 替换为 trenutniPokusajiPitanja
  • OnAnswerIncorrect 替换为 NaNetacanOdgovor
  • AddScore 替换为 DodajBodove

只要保持逻辑一致,就能顺利实现需求。

内容的提问来源于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.29 14:53:13