Mağaza
Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 15 / 25.
İki kule olduğunda oyuncunun bir dükkâna ihtiyacı olur. Dükkân verilerden kendini oluşturur: her kule prefab’ı için bir düğme adı ve fiyatı gösterir, tıklama ise sonraki platform için o kuleyi seçer. Alttaki ShopPanel iki düğmeyi barındırır.
Döngü içinde oluşturulan düğmelerin dinleyicileri de burada, lambda ile eklenir. Lambda, değerleri değil değişkenleri yakalar ve bir for döngüsünde tüm turlar için tek bir i vardır: daha sonra tıklandığında her lambda, döngü sona erdikten sonra i değerini okur. Döngü içinde tanımlanan yerel değişken her turda yeniden oluşturulur; bu yüzden önce değeri ona kopyalayın:
for (int i = 0; i < levels.Length; i++)
{
LevelData level = levels[i];
levelButtons[i].onClick.AddListener(() => Load(level));
}Görev
OrtaBir tıklamayla inşa edilecek kuleyi seçen bir dükkân ekle.
BuildManageriçindetowerPrefabyerine serileştirilmişTower[] shop,Button[] shopButtonsveColor chosenColorekle; ayrıcaprivate Tower chosen;ekle.Startiçinde her düğmeyiprefab.data.towerName + "\n" + prefab.data.costile etiketle ve bir tıklamanınChoose(prefab)çağırmasını sağla; ardındanChoose(shop[0])çağır.Choosekuleyi seçili tutar ve düğmesinichosenColorile, diğerlerini beyaza boyar.chosen.data.costkarşılığındachosenkulesini inşa et.
“Oyna” düğmesine bas ve her iki türden de inşa et. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
using UnityEngine.InputSystem;
public class BuildManager : MonoBehaviour
{
[SerializeField] private GameManager game;
[SerializeField] private Tower towerPrefab;
void Update()
{
if (!Mouse.current.leftButton.wasPressedThisFrame)
{
return;
}
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit) && hit.collider.TryGetComponent(out BuildPad pad))
{
Build(pad);
}
}
void Build(BuildPad pad)
{
if (pad.tower != null)
{
return;
}
if (!game.TrySpend(towerPrefab.data.cost))
{
Debug.Log("Not enough money");
return;
}
pad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);
}
}
Unity Oyunu: Kule Savunması bölümündeki tüm dersler
Kendi başına pratik yap: Unity playground