void InitializeUpgrades() { all_upgradable = GetComponents <BaseUpgrade>(); foreach (BaseUpgrade upgrade in all_upgradable) { GameObject menu = Instantiate(menuPrefab); menu.transform.SetParent(MenuContainer); menu.transform.localScale = Vector3.one; UpgradeMenuUI menuUI = menu.GetComponent <UpgradeMenuUI>(); upgrades.Add(upgrade, menuUI); int upgradesCount = upgrade.GetPossibleUpgradeCount(coins.GetCoins(), out double cost); menuUI.SetInfo(upgrade.GetLevel(), upgrade.GetMaxLevel(), upgrade.GetName(), upgrade.GetDescription(), upgrade.GetPrice(), upgradesCount, cost, upgrade.GetIconSprite()); menuUI.OnSingleUpgradeClicked += SingleClickHandler; menuUI.OnMaxUpgradeClicked += MaxClickHandler; menuUI.SetBlockScreenState(upgrade.IsLocked()); upgrade.OnLockIsOff += menuUI.SetBlockScreenState; //Debug.Log($"{menuUI.name} is set to {!upgrade.IsLocked()}"); } }