Menu
CoddyTech

Tekrar: Eşya Veritabanı

Coddy'nin Unity Journey'sinin Unity'de Oyun Mimarisi bölümünün bir parçası. Ders 23 / 50.

challenge icon

Görev

Orta

Demircinin dükkânı, oyundaki tüm dükkânların paylaşacağı bir eşya veritabanından satış yapar. İki varlık türünü ve Shop'u yaz:

  • ItemData (ItemData.cs dosyasında): Create menü girdisi olan ve itemName (bir string) ile price (bir int) genel alanlarına sahip bir ScriptableObject.
  • ItemDatabase (ItemDatabase.cs dosyasında): Create menü girdisi olan ve items adlı, ItemData listesi olan tek bir genel alana sahip bir ScriptableObject.
  • Shop, ItemDatabase türünde bir database genel alanına sahip olur. itemText, ilk eşyayla başlayarak seçili eşyayı Iron Sword: 30 gold biçiminde gösterir; goldText ise altın miktarını Gold: 50 biçiminde gösterir.
  • Sağ ok bir sonraki eşyayı seçer; son eşyadan sonra yeniden ilk eşyaya geçer. Sol ok ise ters yönde, ilk eşyadan son eşyaya geçer.
  • Boşluk tuşu seçili eşyayı satın alır. Oyuncunun zaten satın aldığı bir eşya için günlükte Already owned: Iron Sword mesajı gösterilir. Altın miktarından daha pahalı bir eşya için Not enough gold for Iron Sword mesajı gösterilir. Aksi durumda altın miktarı eşyanın fiyatı kadar azalır, eşya sahip olunanlara eklenir, metinler güncellenir ve Konsol'da Bought Iron Sword mesajı gösterilir.
  • Satın alınan eşyaları Shop içinde tut. Varlıklar olduğu gibi kalır: veritabanı paylaşılır ve Editor'da bir varlıkta yapılan değişiklik Play modundan sonra da korunur.

Projede dört ItemData varlığı (Iron Sword 30, Oak Shield 20, Healing Potion 10, Long Bow 45), bunları bu sırayla listeleyen bir Database varlığı vardır ve Inspector'da Database, Shop'un database alanına atanmıştır. Play'e bas, alışveriş yap, ardından Check'e bas.

Kendin dene

using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;

public class Shop : MonoBehaviour
{
    public TMP_Text itemText;
    public TMP_Text goldText;
    public int gold = 50;

    // Veritabanı alanı, ok tuşlarıyla gezinme ve Space ile satın alma işlemi buraya gelecek
}

Unity'de Oyun Mimarisi bölümündeki tüm dersler