using System.Linq; using UnityEngine; public class GeneralProbabilityPanel : MonoBehaviour { [SerializeField] private GeneralProbabilityView[] probabilityViews; private void Awake() { probabilityViews = GetComponentsInChildren(); } public void Init(GeneralProbabilityData[] dataArray) { var dataList = dataArray.ToList(); dataList.Sort(CompareData); int i; int length = Mathf.Min(probabilityViews.Length, dataList.Count); for (i = 0; i < length; i++) probabilityViews[i].Init(dataList[i]); for (; i < probabilityViews.Length; i++) probabilityViews[i].Hide(); } private int CompareData(GeneralProbabilityData a, GeneralProbabilityData b) { if (a.IsClaimed) return 1; if (b.IsClaimed) return -1; return (a.Probability - b.Probability) > 0 ? 1 : -1; } } public class GeneralProbabilityData { public GameCore.ItemData Item { get; set; } public float Probability { get; set; } public bool IsClaimed { get; set; } }