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:

  1. Sahnenizde bir Canvas oluşturun (GameObject > UI > Canvas).
  2. Canvas'a Düğmeler ekleyin ve bunları "Upgrade Health," "Upgrade Speed," ve "Upgrade Attack" olarak etiketleyin.
  3. UpgradeManager betiğini sahnedeki bir GameObject'e ekleyin ve oyuncunuzun GameObject'ini Inspector'daki player alanına atayın.
  4. 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.