12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using UnityEngine;
- using TMPro;
- // 答案选项类,负责显示和管理单个答案的行为
- public class AnswerOption : MonoBehaviour
- {
- // 显示答案文本的TextMeshPro组件
- [SerializeField] private TextMeshPro answerText;
- // 当前答案的数值
- private int answerValue;
- // 数学测验管理器的引用
- private MathQuizManager quizManager;
- // 答案选项上浮的速度
- private float floatSpeed;
- // 答案选项的存活时间
- private float lifeTime;
- // Unity生命周期方法,初始化时调用
- void Start()
- {
- // 如果answerText为空,尝试在子对象中查找TextMeshPro组件
- if (answerText == null)
- {
- answerText = GetComponentInChildren<TextMeshPro>();
- if (answerText == null)
- {
- // 如果依然找不到,输出错误日志
- Debug.LogError("AnswerOption: No TextMeshPro component found! Please add a TextMeshPro component to this object or its children.");
- }
- }
- }
- // 初始化答案选项,设置管理器、数值、是否正确等
- public void Initialize(MathQuizManager manager, int value, bool correct)
- {
- quizManager = manager; // 记录管理器引用
- answerValue = value; // 设置答案数值
- if (answerText != null)
- {
- answerText.text = value.ToString(); // 显示答案文本
- }
- floatSpeed = manager.floatSpeed; // 获取上浮速度
- lifeTime = manager.answerLifeTime; // 获取存活时间
- // 设置自动销毁,lifeTime秒后销毁自身
- Destroy(gameObject, lifeTime);
- }
- // 鼠标点击事件,检测答案是否正确
- void OnMouseDown()
- {
- if (quizManager != null)
- {
- quizManager.CheckAnswer(this); // 通知管理器检查答案
- Destroy(gameObject); // 点击后销毁自身
- }
- }
- // 获取当前答案的数值
- public int GetAnswerValue()
- {
- return answerValue;
- }
- }
|