using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameRoot : MonoBehaviour { public static GameRoot Instance = null; private float _score; //记录选择题答案字典 public Dictionary> _choiceDict = new Dictionary>(); //记录多选题答案字典 public Dictionary> _moreChoiceDict = new Dictionary>(); //记录操作题答案字典 public Dictionary> _oprerationDict = new Dictionary>(); private void Awake() { DontDestroyOnLoad(this); Instance = this; } // Start is called before the first frame update void Start() { int[] a = { 1,2,3,4,}; //SubmitChoiceAnswer(1,1,1); //SubmitChoiceAnswer(1, 2, 2); //SubmitChoiceAnswer(2, 1, 2); //CheckChoiceAnswer(); SubmitMoreChoiceAnswer(5,1,a ); SubmitOprerationAnswer(5, 2, true); } #region 答案管理方法 /// /// 提交选择题答案函数 /// PassIndex:关卡索引 /// QuestionIndex:问题索引 /// answer:记录用户所选的答案(ABCD对应0123) /// /// 关卡索引 /// 问题索引 /// 记录用户所选的答案(ABCD对应0123) public static void SubmitChoiceAnswer(int PassIndex, int QuestionIndex, int answer) { if (GameRoot.Instance == null) return; //如果不存在则创建并放入字典 if (!GameRoot.Instance._choiceDict.ContainsKey(PassIndex)) { Dictionary dict = new Dictionary(); dict.Add(QuestionIndex, answer); GameRoot.Instance._choiceDict.Add(PassIndex, dict); Debug.Log("记录第" + PassIndex + "关卡" + QuestionIndex + "的问题答案为" + answer); } else { //继续记录 Dictionary dict = new Dictionary(); if (GameRoot.Instance._choiceDict.TryGetValue(PassIndex, out dict)) { dict.Add(QuestionIndex, answer); GameRoot.Instance._choiceDict[PassIndex] = dict; Debug.Log("关卡字典已存在,更新" + QuestionIndex + "问题的答案为" + answer); } } } /// /// 提交多选题答案函数 /// PassIndex:关卡索引 /// QuestionIndex:问题索引 /// answer:记录用户所选的答案(ABCD对应0123) /// /// 关卡索引 /// 问题索引 /// 记录用户所选的答案 public static void SubmitMoreChoiceAnswer(int PassIndex, int QuestionIndex, int[] answer) { if (GameRoot.Instance == null) return; //如果不存在则创建并放入字典 if (!GameRoot.Instance._moreChoiceDict.ContainsKey(PassIndex)) { Dictionary dict = new Dictionary(); dict.Add(QuestionIndex, answer); GameRoot.Instance._moreChoiceDict.Add(PassIndex, dict); Debug.Log("记录第" + PassIndex + "关卡" + QuestionIndex + "的问题答案为" + ArrToString(answer)); } else { //继续记录 Dictionary dict = new Dictionary(); if (GameRoot.Instance._moreChoiceDict.TryGetValue(PassIndex, out dict)) { dict.Add(QuestionIndex, answer); GameRoot.Instance._moreChoiceDict[PassIndex] = dict; Debug.Log("关卡字典已存在,更新" + QuestionIndex + "问题的答案为" + answer); } } } /// /// 提交操作题答案函数 /// PassIndex:关卡索引 /// QuestionIndex:问题索引 /// answer:记录用户所选的答案(ABCD对应0123) /// /// 关卡索引 /// 问题索引 /// 记录用户所选的答案 public static void SubmitOprerationAnswer(int PassIndex, int QuestionIndex, bool answer) { if (GameRoot.Instance == null) return; //如果不存在则创建并放入字典 if (!GameRoot.Instance._oprerationDict.ContainsKey(PassIndex)) { Dictionary dict = new Dictionary(); dict.Add(QuestionIndex, answer); GameRoot.Instance._oprerationDict.Add(PassIndex, dict); Debug.Log("记录第" + PassIndex + "关卡" + QuestionIndex + "的问题答案为" + answer); } else { //继续记录 Dictionary dict = new Dictionary(); if (GameRoot.Instance._oprerationDict.TryGetValue(PassIndex, out dict)) { dict.Add(QuestionIndex, answer); GameRoot.Instance._oprerationDict[PassIndex] = dict; Debug.Log("关卡字典已存在,更新" + QuestionIndex + "问题的答案为" + answer); } } } public void CheckChoiceAnswer() { int passCount = _choiceDict.Keys.Count; Debug.Log("总关卡:"+passCount); for (int i = 0; i < passCount+1; i++) { Dictionary dict = new Dictionary(); if(_choiceDict.TryGetValue(i, out dict)) { int questionCount = dict.Keys.Count; // Debug.Log("第" + i + "关有" + questionCount + "道题"); for (int j = 0; j < questionCount+1; j++) { if (dict.ContainsKey(j)) { Debug.Log("第"+i+"关第" + j + "题用户作答为" + dict[j]); } } } } } #endregion public static string ArrToString(int[] arr) { string str=""; for (int i = 0; i < arr.Length; i++) { if (arr[i].ToString() != "") { str += arr[i].ToString(); } } return str; } }