Unity'de Üs Yükseltme Sistemi
Birçok oyunda, oyuncular ek özellikleri açmak, savunmayı geliştirmek veya üretim oranlarını artırmak için bir üssü veya binayı yükseltebilirler. Bu eğitim, Unity'de bir üs yükseltme sistemi kurmanıza rehberlik edecek ve bir binanın her seviyede görsel ve işlevsel değişikliklerle birden fazla seviyeye yükseltilmesine olanak tanıyacaktır.
1. Temel Yapının Kurulması
İlk olarak, üssünüzün seviyesi, sağlığı ve üretim oranı gibi özelliklerini tanımlayan bir Base
betiği oluşturun. Her seviye yükseltmesi bu nitelikleri değiştirecektir.
using UnityEngine;
public class Base : MonoBehaviour
{
public int level = 1;
public int health = 100;
public int productionRate = 10;
public void UpgradeBase()
{
level++;
health += 50; // Increase health by 50 with each level
productionRate += 5; // Increase production rate by 5 with each level
Debug.Log("Base upgraded to level " + level);
}
}
Bu Base
betiği, seviyeyi artıran ve üssün niteliklerini yükselten basit bir UpgradeBase()
metodunu içerir. Bu betiği sahnedeki taban GameObject'e ekleyin.
2. Yükseltme Yöneticisi Oluşturma
Daha sonra, oyuncunun yükseltme için yeterli para birimine sahip olup olmadığını kontrol etmek de dahil olmak üzere temel yükseltmeleri yöneten bir UpgradeManager
betiği oluşturun.
using UnityEngine;
public class UpgradeManager : MonoBehaviour
{
public Base playerBase;
public int upgradeCost = 100;
public void AttemptUpgrade()
{
if (CurrencySystem.Instance.SpendCurrency(upgradeCost))
{
playerBase.UpgradeBase();
upgradeCost += 50; // Increase the cost for each upgrade
}
else
{
Debug.Log("Not enough currency to upgrade.");
}
}
}
Bu UpgradeManager
betiğini bir GameObject'e ekleyin, temel GameObject'i playerBase
alanına atayın ve başlangıç upgradeCost
değerini ayarlayın. Her yükseltme maliyeti artırarak gelecekteki yükseltmeleri daha zorlu hale getirir.
3. Bir Para Birimi Sisteminin Kurulması
Yükseltme maliyetlerini yönetmek için, oyuncunun parasını takip etmenin ve harcamanın basit bir yolu olarak CurrencySystem
ekleyin. İşte bir örnek:
using UnityEngine;
public class CurrencySystem : MonoBehaviour
{
public static CurrencySystem Instance;
public int currency = 500;
private void Awake()
{
if (Instance == null)
Instance = this;
else
Destroy(gameObject);
}
public bool SpendCurrency(int amount)
{
if (currency >= amount)
{
currency -= amount;
Debug.Log("Currency spent: " + amount + ". Remaining: " + currency);
return true;
}
else
{
Debug.Log("Not enough currency.");
return false;
}
}
public void AddCurrency(int amount)
{
currency += amount;
Debug.Log("Currency added: " + amount + ". Total: " + currency);
}
}
Bu CurrencySystem
'yi sahnedeki bir GameObject'e ekleyin. Tekil desen, UpgradeManager
gibi diğer betiklerden kolay erişim sağlar.
4. Seviye Başına Görselleri ve Efektleri Güncelleme
Her bir temel yükseltmeyi görsel olarak farklı kılmak için her seviye için farklı modeller veya dokular gibi varyasyonlar ekleyin. Örneğin:
- Her bir temel seviye için birden fazla 3D model oluşturun veya farklı dokular/malzemeler hazırlayın.
- Seviye her arttığında modelleri veya materyalleri değiştirmek için
Base
sınıfına kod ekleyin.
Base
betiğinde görselleri güncellemek için bir kod parçası:
public GameObject[] levelModels; // Assign each level's model in Inspector
public void UpgradeBase()
{
level++;
health += 50;
productionRate += 5;
UpdateBaseModel();
}
void UpdateBaseModel()
{
for (int i = 0; i < levelModels.Length; i++)
{
levelModels[i].SetActive(i == level - 1);
}
}
Bu kod, üssün mevcut seviyesine uyan modeli aktif hale getirecek ve diğerlerini devre dışı bırakacaktır.
5. Yükseltmeler için bir kullanıcı arayüzü oluşturma
Sonra, oyuncunun yükseltmeleri başlatmasına ve üssün mevcut seviyesini takip etmesine izin veren kullanıcı arayüzü öğeleri oluşturun. Bunu yapmak için:
- "Upgrade Base" etiketli bir buton içeren bir Canvas oluşturun.
- Bu düğmeye bir
OnClick
olayı ekleyin ve bunuUpgradeManager
metodununAttemptUpgrade
metoduna bağlayın. - Oyunculara yükseltme ilerlemesi hakkında geri bildirim vermek için üssün seviyesini, sağlığını ve üretim oranını kullanıcı arayüzünde görüntüleyin.
6. Yükseltme Sisteminin Test Edilmesi
Oyunu çalıştırın ve "Upgrade Base" düğmesine tıklayın. Her yükseltmeyle birlikte üssün nitelikleri artmalı ve görseller buna göre değişmelidir. Para birimi değişikliklerini ve seviye ayarlamalarını doğrulamak için Hata Ayıklama günlüğünü kullanın.
Sistemin Genişletilmesi
Bu temel yükseltme sistemi, şunları ekleyerek genişletilebilir:
- Farklı özelliklere ve görsel geliştirmelere sahip yeni seviyeler.
- Malzeme veya zaman gibi para biriminin ötesinde kaynak gereksinimleri.
- Parçacık efektleri veya ses geri bildirimi gibi yükseltmeler için özel efektler.
Çözüm
Unity'de dinamik nitelik artışları, basit bir para birimi kontrolü ve yükseltmeler için kullanıcı arayüzü içeren bir temel yükseltme sistemi oluşturduk. Bu sistem, oyununuza çok aşamalı yükseltmeler ve her seviye için farklı görseller gibi daha karmaşık mekanikler eklemek için bir temel sağlar.