using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class AchievementsGUI : MonoBehaviour { public AchievementWidget widgetPrefab; public Transform widgetsParent; public ScrollRect scrollWindow; public float startWidgetsOffset; public float scrollWidgetsOffset = 100f; private Vector2 scrollParentStartPos = Vector2.zero; public bool sortList; [HideInInspector] public AchievementManager achievemntManager; [HideInInspector] public List widgetsList = new List(); private void Start() { Initialize(); } private void OnEnable() { Refresh(); } public void Initialize() { achievemntManager = AchievementManager.Instance; scrollParentStartPos = scrollWindow.content.localPosition; scrollWindow.content.sizeDelta = new Vector2(scrollWindow.content.sizeDelta.x, scrollWidgetsOffset * (float)achievemntManager.achievements.Count + scrollWidgetsOffset * 0f); scrollWindow.content.localPosition = scrollParentStartPos; Canvas.ForceUpdateCanvases(); scrollWindow.verticalScrollbar.value = 1f; Canvas.ForceUpdateCanvases(); for (int i = 0; i < achievemntManager.achievements.Count; i++) { AchievementWidget achievementWidget = Object.Instantiate(widgetPrefab); achievementWidget.transform.SetParent(widgetsParent); achievementWidget.GetComponent().localPosition = Vector3.zero + new Vector3(0f, (float)i * (0f - scrollWidgetsOffset) + startWidgetsOffset, 0f); achievementWidget.GetComponent().localScale = Vector3.one; achievementWidget.SetSource(achievemntManager.achievements[i]); widgetsList.Add(achievementWidget); } Refresh(); scrollWindow.verticalNormalizedPosition = 1f; } public void Refresh() { if (!(achievemntManager == null)) { for (int i = 0; i < widgetsList.Count; i++) { widgetsList[i].RefreshWidget(); } } } }