AnswerOption.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using UnityEngine;
  2. using TMPro;
  3. // 答案选项类,负责显示和管理单个答案的行为
  4. public class AnswerOption : MonoBehaviour
  5. {
  6. // 显示答案文本的TextMeshPro组件
  7. [SerializeField] private TextMeshPro answerText;
  8. // 当前答案的数值
  9. private int answerValue;
  10. // 数学测验管理器的引用
  11. private MathQuizManager quizManager;
  12. // 答案选项上浮的速度
  13. private float floatSpeed;
  14. // 答案选项的存活时间
  15. private float lifeTime;
  16. // Unity生命周期方法,初始化时调用
  17. void Start()
  18. {
  19. // 如果answerText为空,尝试在子对象中查找TextMeshPro组件
  20. if (answerText == null)
  21. {
  22. answerText = GetComponentInChildren<TextMeshPro>();
  23. if (answerText == null)
  24. {
  25. // 如果依然找不到,输出错误日志
  26. Debug.LogError("AnswerOption: No TextMeshPro component found! Please add a TextMeshPro component to this object or its children.");
  27. }
  28. }
  29. }
  30. // 初始化答案选项,设置管理器、数值、是否正确等
  31. public void Initialize(MathQuizManager manager, int value, bool correct)
  32. {
  33. quizManager = manager; // 记录管理器引用
  34. answerValue = value; // 设置答案数值
  35. if (answerText != null)
  36. {
  37. answerText.text = value.ToString(); // 显示答案文本
  38. }
  39. floatSpeed = manager.floatSpeed; // 获取上浮速度
  40. lifeTime = manager.answerLifeTime; // 获取存活时间
  41. // 设置自动销毁,lifeTime秒后销毁自身
  42. Destroy(gameObject, lifeTime);
  43. }
  44. // 鼠标点击事件,检测答案是否正确
  45. void OnMouseDown()
  46. {
  47. if (quizManager != null)
  48. {
  49. quizManager.CheckAnswer(this); // 通知管理器检查答案
  50. Destroy(gameObject); // 点击后销毁自身
  51. }
  52. }
  53. // 获取当前答案的数值
  54. public int GetAnswerValue()
  55. {
  56. return answerValue;
  57. }
  58. }