Meydan okuma 2: ECS bileşeni
- Oyun Geliştirme kursu
- Uzman
- Ders 44/47
- 5 dk
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
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
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
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
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
public ____ HareketBileseni : IComponentData
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ı |