using TMPro; using UnityEngine; namespace AibisDream.FixSystem { public class CheckGameHandler : MonoBehaviour { [SerializeField] private TMP_Text ruleText; [SerializeField] private SpriteRenderer resultPart; [SerializeField] private SpriteButton rightBtn; [SerializeField] private SpriteButton errorBtn; private CheckRule _curRule; private PipelineProduct _curProduct; private void Awake() { rightBtn.OnClicked += () => OnCheck(true); errorBtn.OnClicked += () => OnCheck(false); } public void LoadRules(CheckRule checkRule) { _curRule = checkRule; // 展示规则 ruleText.text = _curRule.GetRuleText(); } public void Handle(PipelineProduct product) { // 展示该物体 resultPart.sprite = product.CheckData.sprite; resultPart.color = GetColorFromString(product.CheckData.colorName); _curProduct = product; } public Color GetColorFromString(string colorName) { try { return (Color)typeof(Color).GetProperty(colorName.ToLowerInvariant())?.GetValue(null, null)!; } catch { Debug.LogError("Invalid color name"); return Color.black; // 默认返回黑色 } } public void Clear() { _curProduct = null; resultPart.sprite = null; } private void OnCheck(bool isPass) { if (_curProduct == null || _curRule == null) { return; } var matchRes = _curRule.Match(_curProduct.CheckData); Debug.Log(matchRes == isPass ? "判断正确" : "判断错误"); _curProduct.CheckPass(matchRes == isPass); } } public enum CompareSign { Ignore, Equal, NotEqual, GreaterThan, LessThan, GreaterThanOrEqual, LessThanOrEqual } }