private void CreateStageButtons() { List <Stage> stages = _master.GetStages(); GameObject newStageItem; float buttonHeight = 0f; float buttonSpacing = _stageContainer.GetComponent <VerticalLayoutGroup>().spacing; float containerViewHeight = _stageView.GetComponent <RectTransform>().sizeDelta.y; bool scrollNeeded = false; RectTransform containerRect = _stageContainer.GetComponent <RectTransform>(); Vector2 containerSize = containerRect.sizeDelta; _stageContainer.GetComponent <RectTransform>().sizeDelta = new Vector2(0, containerViewHeight); ClearStagesButtons(); for (int i = 0; i < stages.Count; i++) { if (!stages[i].Islocked) { if (buttonHeight == 0f) { buttonHeight = _baseStageButton.GetComponent <RectTransform>().sizeDelta.y; } newStageItem = Instantiate(_baseStageButton, _stageContainer.transform, false); newStageItem.name = "s" + i; newStageItem.GetComponent <StageMenuItem>() .SetStageNameLabel(stages[i].Label, false) .SetStars(BaseValues.GetStars(stages[i].HighestPickUps, stages[i].TotalPickUps)) .SetStageIndex(i); containerSize.y = (buttonHeight + buttonSpacing) * (i + 1); if (containerSize.y > containerViewHeight) { containerRect.sizeDelta = containerSize; scrollNeeded = true; } } } if (!scrollNeeded) { _stageView.GetComponent <ScrollRect>().vertical = false; } else { _scrollbar.value = 0; } }