PlayList.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.InputSystem;
  5. using UnityEngine.UI;
  6. using System;
  7. public class PlayList : MonoBehaviour
  8. {
  9. public GameObject skipButton;
  10. public GameObject[] playListObjects1;
  11. public GameObject[] playListObjects;
  12. /// <summary>
  13. /// 等待时间
  14. /// </summary>
  15. private float waitTime;
  16. /// <summary>
  17. /// 答案数据
  18. /// </summary>
  19. [Header("答案数据")]
  20. public List<QuestionData> saveData;
  21. public UpData upData;
  22. private void Awake()
  23. {
  24. DateTime now = DateTime.Now;
  25. DateTime startTime = new DateTime(2024, 1, 30);
  26. Debug.Log(startTime.Subtract(now).Days);
  27. }
  28. private void Start()
  29. {
  30. //StartPlayState2();
  31. }
  32. /// <summary>
  33. /// 跳过
  34. /// </summary>
  35. public void Skip()
  36. {
  37. waitTime = 0.5f;
  38. }
  39. /// <summary>
  40. /// 停止并退出当前课程
  41. /// </summary>
  42. public void StopAll()
  43. {
  44. StopAllCoroutines();
  45. for (int i = 0; i < playListObjects1.Length; i++)
  46. {
  47. playListObjects1[i].gameObject.SetActive(false);
  48. }
  49. for (int i = 0; i < playListObjects.Length; i++)
  50. {
  51. playListObjects[i].gameObject.SetActive(false);
  52. }
  53. gameObject.SetActive(false);
  54. }
  55. /// <summary>
  56. /// 播放课堂行为管理
  57. /// </summary>
  58. public void StartPlayState1()
  59. {
  60. gameObject.SetActive(true);
  61. saveData = new List<QuestionData>();
  62. StartCoroutine(StartPlayState2Coroutine(playListObjects1, 1));
  63. }
  64. /// <summary>
  65. /// 播放高级认知提问
  66. /// </summary>
  67. public void StartPlayState2()
  68. {
  69. gameObject.SetActive(true);
  70. saveData = new List<QuestionData>();
  71. StartCoroutine(StartPlayState2Coroutine(playListObjects, 2));
  72. }
  73. private IEnumerator StartPlayState2Coroutine(GameObject[] objects, int state)
  74. {
  75. for (int i = 0; i < objects.Length; i++)
  76. {
  77. yield return StartCoroutine(WaitTime(objects[i]));
  78. }
  79. upData.Init(saveData, state);
  80. Debug.Log("完成");
  81. StopAll();
  82. }
  83. private IEnumerator WaitTime(GameObject obj)
  84. {
  85. obj.SetActive(true);
  86. SelectPrefab selectPrefab = obj.GetComponent<SelectPrefab>();
  87. if (selectPrefab == null)
  88. {
  89. skipButton.SetActive(true);
  90. waitTime = obj.GetComponent<AudioSource>().clip.length + 1;
  91. }
  92. else
  93. {
  94. skipButton.SetActive(false);
  95. waitTime = 9999999;
  96. selectPrefab.SelectPrefabCreateInit((QuestionData value) =>
  97. {
  98. if (value.isUpData)
  99. {
  100. saveData.Add(value);
  101. }
  102. waitTime = 0;
  103. });
  104. }
  105. while (waitTime > 0)
  106. {
  107. waitTime -= Time.deltaTime;
  108. yield return null;
  109. }
  110. obj.SetActive(false);
  111. }
  112. }
  113. /// <summary>
  114. /// 题目数据
  115. /// </summary>
  116. [Serializable]
  117. public class QuestionData
  118. {
  119. /// <summary>
  120. /// 文本
  121. /// </summary>
  122. public string text;
  123. /// <summary>
  124. /// 选择的题号
  125. /// </summary>
  126. public string selectIndex;
  127. public bool isRight;
  128. /// <summary>
  129. /// 是否需要上传
  130. /// </summary>
  131. public bool isUpData;
  132. }
粤ICP备19079148号