using JetBrains.Annotations; using UnityEngine; using UnityEngine.UI; public class archievePrefab : MonoBehaviour { [Header("Inspector")] public Image archieve_btmImage; public Text archieve_name; public Text archieve_description; [Header("Rarity Background Sprites")] public Sprite whiteLevelSprite; public Sprite greenLevelSprite; public Sprite blueLevelSprite; public Sprite purpleLevelSprite; public Sprite goldenLevelSprite; public Sprite redLevelSprite; public Sprite colorfulLevelSprite; public void Setup(AchievementLevel level) { if (archieve_name != null) archieve_name.text = level.levelName; if (archieve_description != null) archieve_description.text = level.description; SetRarityVisuals(level.rarity); } private void SetRarityVisuals(AchievementRarity rarity) { if (archieve_btmImage == null) return; Sprite targetSprite = whiteLevelSprite; bool useBlackText = false; switch (rarity) { case AchievementRarity.Common: targetSprite = whiteLevelSprite; useBlackText = true; // 白色底图用黑字 break; case AchievementRarity.Advanced: targetSprite = greenLevelSprite; useBlackText = true; // 绿色底图用黑字 break; case AchievementRarity.Rare: targetSprite = blueLevelSprite; useBlackText = false; break; case AchievementRarity.Epic: targetSprite = purpleLevelSprite; useBlackText = false; break; case AchievementRarity.Legendary: targetSprite = goldenLevelSprite; useBlackText = true; // 金色底图用黑字 break; case AchievementRarity.Mythic: targetSprite = redLevelSprite; useBlackText = false; break; case AchievementRarity.Exquisite: targetSprite = colorfulLevelSprite; useBlackText = true; // 至臻底图用黑字 break; } // 1. 替换底图图片 (archieve_btmImage) if (targetSprite != null) { archieve_btmImage.sprite = targetSprite; archieve_btmImage.color = Color.white; } // 2. 根据底图亮度调整文字颜色 (archieve_name) if (archieve_name != null) { archieve_name.color = useBlackText ? Color.black : Color.white; } } }