CodeBlanks Logo Icon CodeBlanks

Özet - Unity DOTS/ECS

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

Player.cs
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

Player.cs
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

Soru
public partial class PositionSystem : ____
Cevap
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

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