public virtual void ApplyUpgrade() { if (!HasRequiredResources()) { Debug.Log("You do not have the required resources"); return; } foreach (KeyValuePair <SettlementResourceData, int> kvp in upgrade.RequiredResources) { SettlementResourceData resourceRequired = kvp.Key; int amountRequired = kvp.Value; settlement.SettlementData.RemoveResource(resourceRequired, amountRequired); } int markerIndex = SettlementUpgradeUI.Instance.upgradeMarkerIndex; GameObject upgradeObject = Instantiate(upgrade.Prefab, settlement.settlementUpgradeSpawns[markerIndex]); upgradeObject.transform.localPosition = new Vector3(0, 0, 0); settlement.DisableMarkerAtIndex(markerIndex); Destroy(gameObject); }