Unity'de Oyuncu Yükseltme Sistemi
Bu eğitim, Unity'de temel bir yükseltme sistemi oluşturmanıza rehberlik edecektir. Yükseltme sistemleri oyunlarda yaygındır ve oyuncuların karakterlerini, ekipmanlarını veya yeteneklerini zamanla geliştirmelerine olanak tanır. Bir oyuncunun sağlık, hız ve saldırı gücü gibi niteliklerini artırmasına olanak tanıyan örnek bir yükseltme sistemi oluşturacağız.
Ön koşullar
- Unity Editör kuruldu.
- C# ve Unity'nin kullanıcı arayüzü (UI) sistemine ilişkin temel bilgi.
- Temel bir oyuncu GameObject'i ve yükseltme seçeneklerini görüntüleyen bir UI Canvas'ı ile kurulmuş bir proje.
Adım 1: Oyuncu Niteliklerini Ayarlayın
Öncelikle, oyuncunun yükseltilebilen niteliklerini tanımlayan bir C# betiği oluşturun. Bu betik sağlık, hız ve saldırı gücü gibi özellikleri tutacaktır.
using UnityEngine;
public class PlayerAttributes : MonoBehaviour
{
public int health = 100;
public float speed = 5f;
public int attackPower = 10;
public void IncreaseHealth(int amount)
{
health += amount;
Debug.Log("Health increased to " + health);
}
public void IncreaseSpeed(float amount)
{
speed += amount;
Debug.Log("Speed increased to " + speed);
}
public void IncreaseAttackPower(int amount)
{
attackPower += amount;
Debug.Log("Attack Power increased to " + attackPower);
}
}
Oyuncunuzun GameObject'ine niteliklerini yönetmek için bu PlayerAttributes
betiğini ekleyin.
Adım 2: Yükseltme Yöneticisini Oluşturun
Sonra, yükseltme seçeneklerini yönetmek ve bunları oyuncunun niteliklerine uygulamak için bir UpgradeManager
betiği oluşturun. Bu betik, her yükseltmenin ne kadara mal olacağını ve oyuncunun niteliklerini ne kadar artıracağını kontrol etmenizi sağlayacaktır.
using UnityEngine;
public class UpgradeManager : MonoBehaviour
{
public PlayerAttributes player;
public int healthUpgradeCost = 50;
public int speedUpgradeCost = 30;
public int attackUpgradeCost = 40;
public void UpgradeHealth()
{
if (CurrencySystem.Instance.SpendCurrency(healthUpgradeCost))
{
player.IncreaseHealth(10); // Increase health by 10
}
}
public void UpgradeSpeed()
{
if (CurrencySystem.Instance.SpendCurrency(speedUpgradeCost))
{
player.IncreaseSpeed(0.5f); // Increase speed by 0.5
}
}
public void UpgradeAttackPower()
{
if (CurrencySystem.Instance.SpendCurrency(attackUpgradeCost))
{
player.IncreaseAttackPower(5); // Increase attack power by 5
}
}
}
Bu UpgradeManager
betiği oyuncunun her yükseltme için yeterli para birimine sahip olup olmadığını kontrol eder, ardından uygunsa yükseltmeyi uygular. Sonra, yükseltme maliyetlerini yönetmek için basit bir para birimi sistemi ekleyeceğiz.
Adım 3: Basit Bir Para Birimi Sistemi Oluşturun
Oyuncunun parasını takip eden ve onu yükseltmelere harcamasına izin veren temel bir para sistemi yaratacağız. Bu, oyun içi herhangi bir ekonomi için genişletilebilir.
using UnityEngine;
public class CurrencySystem : MonoBehaviour
{
public static CurrencySystem Instance;
public int currency = 100;
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
betiği para birimi ekleyebilir ve harcayabilir ve tekil olarak uygulandığından diğer betiklerden kolayca erişebilirsiniz. Sahnedeki bir GameObject'e ekleyin.
Adım 4: Yükseltmeler için Kullanıcı Arayüzünü Ayarlayın
Oyuncuların yükseltme sistemiyle etkileşime girmesini sağlamak için, Unity'de her yükseltme seçeneği için düğmeler içeren bir kullanıcı arayüzü oluşturun. İşte nasıl:
- Sahnenizde bir Canvas oluşturun (GameObject > UI > Canvas).
- Canvas'a Düğmeler ekleyin ve bunları "Upgrade Health," "Upgrade Speed," ve "Upgrade Attack" olarak etiketleyin.
UpgradeManager
betiğini sahnedeki bir GameObject'e ekleyin ve oyuncunuzun GameObject'ini Inspector'dakiplayer
alanına atayın.- Her Button'un On Click olayını, uygun yükseltme fonksiyonunu çağırmak için bağlayın (örneğin,
UpgradeManager.UpgradeHealth()
).
Adım 5: Yükseltme Sistemini Test Etme
Oyunu çalıştırın ve yükseltme düğmelerine basmayı deneyin. Her yükseltme oyuncunun niteliklerine uygulanmalı ve CurrencySystem
para birimini buna göre azaltmalıdır. Niteliklerin ve para biriminin beklendiği gibi güncellendiğini doğrulamak için Hata Ayıklama günlüğünü kullanın.
Çözüm
Unity'de oyuncu nitelikleri, para birimi sistemi ve yükseltme yöneticisi dahil olmak üzere temel bir yükseltme sistemi oluşturduk. Bu sistemi daha fazla yükseltme eklemek, yükseltme maliyetlerini dinamik olarak artırmak veya hatta oyununuzun gereksinimlerine göre yeni yükseltme türleri eklemek için özelleştirebilirsiniz. Bu temel, oyunlarınızda daha karmaşık ve ilgi çekici yükseltme mekanikleri oluşturmak için genişletilebilir.