Özet - Unity DOTS/ECS
- Oyun Geliştirme kursu
- Uzman
- Ders 24/47
- 4 dk
DOTS/ECS kullanımını bir özet görevle pekiştirirsin.
DOTS ve ECS genel bakış
Unity DOTS, yüksek performanslı oyun geliştirmek için veri odaklı teknolojileri bir araya getirir. ECS mimarisinde Entity nesneyi temsil eder, IComponentData veri bileşenlerini tanımlar ve SystemBase bu verileri işler. Burst Compiler ise desteklenen hesaplama kodlarını optimize ederek performansa katkıda bulunur.
Entity
Position : IComponentData
Health : IComponentData
SystemBase
OnUpdate()
[BurstCompile]Bu parçalar birlikte kullanıldığında çok sayıda oyun nesnesinin verimli biçimde yönetilmesine yardımcı olur.
Uygulama DOTS/ECS bileşen ve sistemini oluştur
Energy adında IComponentData uygulayan bir struct oluştur ve içine Value adında float alanı ekle. Ardından EnergySystem adında SystemBase sınıfı tanımla. OnUpdate içinde Entities.ForEach kullanarak Energy bileşeninin değerini 2 artır ve işlemi Schedule ile zamanla. Ayrıca enerji sonucunu konsola yazdır.
Başlangıç kodu
using Unity.Entities;
using UnityEngine;
// Energy bileşenini oluştur
// EnergySystem sınıfını oluştur
{
// OnUpdate metodunu tanımla
{
// Energy bileşenini işle
// Value değerini 2 artır
// İşlemi zamanla
}
}
public class EnergyTest : MonoBehaviour
{
void Start()
{
// Enerji sonucunu yazdır
}
}Örnek çözüm
using Unity.Entities;
using UnityEngine;
public struct Energy : IComponentData
{
public float Value;
}
public partial class EnergySystem : SystemBase
{
protected override void OnUpdate()
{
Entities.ForEach((ref Energy energy) =>
{
energy.Value += 2f;
}).Schedule();
}
}
public class EnergyTest : MonoBehaviour
{
void Start()
{
float energy = 2f;
Debug.Log("Energy: " + energy);
}
}Beklenen çıktı
Energy: 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir ECS sisteminde Position verisini saklamak ve bu veriyi işlemek için hangi eşleşme doğrudur?
- Position verisi IComponentData içinde, işlemler SystemBase içinde tutulur Doğru cevap
- Position verisi Burst içinde, işlemler Package Manager içinde tutulur
- Position verisi Archetype içinde, işlemler MonoBehaviour içinde tutulur
- Position verisi SystemBase içinde, işlemler Entity içinde tutulur
Açıklama: IComponentData, Position gibi veri bileşenlerini tanımlar. SystemBase ise bu bileşenleri işleyen sistem mantığını barındırır.
2 DOTS sisteminin temelini tamamla
public partial class PositionSystem : ____
public partial class PositionSystem : SystemBase
Açıklama: PositionSystem, SystemBase sınıfından türetilerek ECS sistem mantığını kullanır.
3 DOTS ve ECS bütünlüğü
| Kavram | Anlamı |
|---|---|
Entity |
Oyun nesnesini temsil eder |
IComponentData |
Veri bileşenlerini tanımlar |
SystemBase |
Bileşenleri işleyen sistemdir |
Burst Compiler |
Hesaplama kodunu optimize eder |