CodeBlanks Logo Icon CodeBlanks

Meydan okuma 2: ECS bileşeni

IComponentData türevi bir bileşen struct'ı yazarsın.

IComponentData nedir?

ECS mimarisinde bileşenler yalnızca veri tutar; oyun mantığı sistemlerde yaşar. Bir bileşen, IComponentData arayüzünü uygulayan bir struct ile tanımlanır; class yerine değer tipi kullanılır çünkü veri böylece daha verimli saklanır. Bileşenin içinde yalnızca alanlar yer alır, metod bulunmaz.

public struct HareketBileseni : IComponentData
{
    public float hiz;
}

Yukarıdaki bileşen yalnızca hiz verisini taşır.

Uygulama Hareket bileşeni

HareketBileseni adında, hiz alanına sahip bir veri bileşeni tanımla; bileşen IComponentData arayüzünü uygulayan bir yapı olsun. BilesenTest sınıfının Start metodunda bu tipte bir değişken oluştur, hiz alanına 5f değerini ata ve Debug.Log ile "Hiz: " metnini hiz alanı ile birleştirerek yazdır.

Başlangıç kodu

Player.cs
using Unity.Entities;
using UnityEngine;

public class BilesenTest : MonoBehaviour
{
    void Start()
    {
        // HareketBileseni tipinde bir degisken olustur
        // hiz alanina 5f degerini ata
        // "Hiz: " metnini hiz alaniyla birlestirip yazdir
    }
}

// HareketBileseni adli veri bilesenini tanimla: IComponentData'yi uygulayan bir yapi olsun
// icinde hiz adli ondalik alan bulunsun

Örnek çözüm

Player.cs
using Unity.Entities;
using UnityEngine;

public struct HareketBileseni : IComponentData
{
    public float hiz;
}

public class BilesenTest : MonoBehaviour
{
    void Start()
    {
        HareketBileseni h = new HareketBileseni();
        h.hiz = 5f;
        Debug.Log("Hiz: " + h.hiz);
    }
}

Beklenen çıktı

Hiz: 5

Uygulama Yaşam bileşeni

YasamBileseni adında, can alanına sahip bir veri bileşeni tanımla; bileşen IComponentData arayüzünü uygulayan bir yapı olsun. YasamTest sınıfının Start metodunda bu tipte bir değişken oluştur, can alanına 50 değerini ata ve Debug.Log ile "Can: " metnini can alanı ile birleştirerek yazdır.

Başlangıç kodu

Player.cs
using Unity.Entities;
using UnityEngine;

public class YasamTest : MonoBehaviour
{
    void Start()
    {
        // YasamBileseni tipinde bir degisken olustur
        // can alanina 50 degerini ata
        // "Can: " metnini can alaniyla birlestirip yazdir
    }
}

// YasamBileseni adli veri bilesenini tanimla: IComponentData'yi uygulayan bir yapi olsun
// icinde can adli tam sayi alan bulunsun

Örnek çözüm

Player.cs
using Unity.Entities;
using UnityEngine;

public struct YasamBileseni : IComponentData
{
    public int can;
}

public class YasamTest : MonoBehaviour
{
    void Start()
    {
        YasamBileseni y = new YasamBileseni();
        y.can = 50;
        Debug.Log("Can: " + y.can);
    }
}

Beklenen çıktı

Can: 50

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 IComponentData türevi bir veri bileşeni hangi anahtar kelimeyle tanımlanır?

  • enum ile
  • struct ile Doğru cevap
  • class ile
  • interface ile

Açıklama: ECS bileşenleri değer tipi olan struct ile tanımlanır; class yerine struct kullanılır.

2 Bileşeni tanımla

Soru
public ____ HareketBileseni : IComponentData
Cevap
public struct HareketBileseni : IComponentData

Açıklama: ECS bileşenleri değer tipi olduğu için struct anahtarıyla tanımlanır.

3 ECS bileşen terimleri

Kavram Anlamı
IComponentData Bileşeni tanımlayan arayüz
Bileşen Yalnızca veri tutan yapı
Entity Bileşenlerin bağlandığı kimlik
Alan Bileşenin içindeki veri kaydı

Uzman bölümündeki tüm dersler