Unity SKFramework框架(十三)、Question 问题模块

目录

一、Questions Profile 问题配置文件

1.配置文件的创建

2.配置文件的编辑

二、Questions Handler 问题处理器

1.初始化

2.Last、Next、Switch

3.根据题号获取指定的问题

三、Example 示例


一、Questions Profile 问题配置文件

1.配置文件的创建

通过右键/Create/Question Profile菜单进行创建

2.配置文件的编辑

如图所示,模块中内置了五种题型,可以在配置文件中进行配置,分别是判断题单选题多选题填空题论述题,它们均继承自Question Base基类。

1).判断题

2).单选题

3).多选题

4).填空题

5).论述题

二、Questions Handler 问题处理器

1.初始化

QuestionsHandler包含两个构造函数

/// <summary>
/// 构造函数
/// </summary>
/// <param name="profile">问题配置文件</param>
public QuestionsHandler(QuestionsProfile profile)
/// <summary>
/// 构造函数
/// </summary>
/// <param name="resourcesPath">配置文件的路径</param>
public QuestionsHandler(string resourcesPath)

2.Last、Next、Switch

/// <summary>
/// 上一题
/// </summary>
public QuestionBase Last()
/// <summary>
/// 下一题
/// </summary>
public QuestionBase Next()
/// <summary>
/// 根据题号切换到指定问题
/// </summary>
/// <param name="sequence">题号</param>
public QuestionBase Switch(int sequence)

3.根据题号获取指定的问题

/// <summary>
/// 根据题号获取问题
/// </summary>
/// <typeparam name="T">题型</typeparam>
/// <param name="sequence">题号</param>
public T Get<T>(int sequence) where T : QuestionBase

三、Example 示例

using UnityEngine;
using SK.Framework;

public class Example : MonoBehaviour
{
    private QuestionsHandler handler;
    private QuestionBase question;

    private void Start()
    {
        handler = new QuestionsHandler("New Questions Profile");    
    }

    private void OnGUI()
    {
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Last", GUILayout.Width(200f), GUILayout.Height(50f))) 
            question = handler.Last();
        if (GUILayout.Button("Next", GUILayout.Width(200f), GUILayout.Height(50f))) 
            question = handler.Next();
        GUILayout.EndHorizontal();

        if (question == null) return;

        switch (question.Type)
        {
            case QuestionType.JUDGE: break;
            case QuestionType.SINGLE_CHOICE:
                GUILayout.Label(string.Format(" {0}.{1}", question.Sequence, question.Question));
                GUILayout.BeginHorizontal();
                if (GUILayout.Button("A")) Debug.Log(question.IsCorrect(0));
                if (GUILayout.Button("B")) Debug.Log(question.IsCorrect(1));
                if (GUILayout.Button("C")) Debug.Log(question.IsCorrect(2));
                if (GUILayout.Button("D")) Debug.Log(question.IsCorrect(3));
                GUILayout.EndHorizontal();
                break;
            case QuestionType.MULTIPLE_CHOICE: break;
            case QuestionType.COMPLETION: break;
            case QuestionType.ESSAY: break;
            default: break;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42139931/article/details/125045409