Meydan okuma 5: Final sentezi
- Oyun Geliştirme kursu
- Uzman
- Ders 47/47
- 5 dk
Bu bölümün tüm kavramlarını birleştiren bir mini görev çözersin.
Bölümün panoraması
Bu bölümde dört farklı beceri bir araya geldi: nesneleri yeniden kullanan havuz yapısı, yalnızca veri tutan ECS bileşenleri, editör menüsü araçları ve Godot animasyon harmanlama. Hepsi aynı amaca hizmet eder: düzenli, verimli ve yönetilebilir kod yazmak. Sentez görevinde havuz, veri yapısı ve yaşam döngüsü birlikte kullanılır.
havuz.Enqueue("Nesne");
playback.travel("yurume");Her parça tek başına basit, birlikte güçlüdür.
Uygulama Havuz ve veri
HavuzSentezi sınıfında havuz adında bir kuyruk alanı tanımla. Veri adında, adet alanına sahip bir veri yapısı tanımla. Start içinde Veri tipinde bir değişken oluştur, adet alanına 7 değerini ata, değişkeni kuyruğa ekle, Dequeue ile geri al ve Debug.Log ile "Adet: " metnini geri alınan verinin adet alanı ile yazdır.
Başlangıç kodu
using UnityEngine;
using System.Collections.Generic;
// Veri adli veri yapisini tanimla: icinde adet adli tam sayi alan bulunsun
public class HavuzSentezi : MonoBehaviour
{
// havuz icin bir kuyruk alani tanimla, eleman tipi Veri olsun
void Start()
{
// Veri tipinde bir degisken olustur ve adet alanina 7 degerini ata
// degiskeni kuyruga ekle
// kuyruktan geri alip alinan adli degiskene ata
// "Adet: " metnini alinan verinin adet alaniyla yazdir
}
}Örnek çözüm
using UnityEngine;
using System.Collections.Generic;
public struct Veri
{
public int adet;
}
public class HavuzSentezi : MonoBehaviour
{
private Queue<Veri> havuz = new Queue<Veri>();
void Start()
{
Veri v = new Veri();
v.adet = 7;
havuz.Enqueue(v);
Veri alinan = havuz.Dequeue();
Debug.Log("Adet: " + alinan.adet);
}
}Beklenen çıktı
Adet: 7
Uygulama Final görev
FinalSentez sınıfında havuz adında bir kuyruk alanı ve sayac adında bir tam sayı alanı tanımla. Awake içinde havuza "Nesne" ekle. Start içinde havuzdan bir nesne al ve Debug.Log ile "Baslatildi" metnini yazdır. Update içinde sayac değerini her karede bir artır.
Başlangıç kodu
using UnityEngine;
using System.Collections.Generic;
public class FinalSentez : MonoBehaviour
{
// havuz adli kuyruk alanini tanimla
// sayac adli tam sayi alanini tanimla
void Awake()
{
// havuza "Nesne" ekle
}
void Start()
{
// havuzdan bir nesne al
// "Baslatildi" metnini yazdir
}
void Update()
{
// sayac degerini her karede bir artir
}
}Örnek çözüm
using UnityEngine;
using System.Collections.Generic;
public class FinalSentez : MonoBehaviour
{
private Queue<string> havuz = new Queue<string>();
int sayac;
void Awake()
{
havuz.Enqueue("Nesne");
}
void Start()
{
string nesne = havuz.Dequeue();
Debug.Log("Baslatildi");
}
void Update()
{
sayac = sayac + 1;
}
}Beklenen çıktı
Baslatildi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bu bölümdeki konuların ortak amacı nedir?
- Verimli, düzenli ve yönetilebilir kod yazmak Doğru cevap
- Yalnızca kod biçimini düzeltmek
- Sahnedeki ışık sayısını artırmak
- Oyun motorunu yeniden kurmak
Açıklama: Bölümdeki tüm konular: nesne havuzu, ECS, editör araçları, animasyon harmanlama; daha verimli, düzenli ve yönetilebilir kod yazmak için kullanılır.
2 Havuzdan çıkarma
var nesne = havuz.____();
var nesne = havuz.Dequeue();
Açıklama: Queue yapısından eleman çıkarma işlemi Dequeue ile yapılır.
3 Sentez tablosu
| Kavram | Anlamı |
|---|---|
Object pooling |
Nesneleri yeniden kullanma yöntemi |
IComponentData |
ECS veri bileşeni |
MenuItem |
Editör menüsü aracı |
Harmanlama |
Animasyonları karıştırma işlemi |