This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Bileşenler (component), oyun nesnelerine (game object) belirli bir görünüm ve/veya işlev kazandırmak için kullanılır. Bileşenlerin oyun nesnelerinin içinde bulunması gerekir ve bileşeni içeren oyun nesnesinin konumundan, dönmesinden ve ölçeğinden etkilenirler:

Birçok bileşenin, türüne özgü ve değiştirilebilen özellikleri vardır. Ayrıca, çalışma sırasında bileşenlerle etkileşim kurmak için bileşen türüne özgü işlevler bulunur:
-- disable the can "body" sprite
msg.post("can#body", "disable")
-- play "hoohoo" sound on "bean" in 1 second
sound.play("bean#hoohoo", { delay = 1, gain = 0.5 } )
Bileşenler bir oyun nesnesine ya yerinde (in-place) ya da bir bileşen dosyasına başvuru olarak eklenir:
Outline görünümünde oyun nesnesine sağ tıklayın ve Add Component (yerinde ekleme) veya Add Component File (dosya başvurusu olarak ekleme) seçeneğini seçin.
Çoğu durumda bileşenleri yerinde oluşturmak en mantıklısıdır, ancak aşağıdaki bileşen türlerinin, bir oyun nesnesine başvuru yoluyla eklenmeden önce ayrı kaynak dosyalarında oluşturulması gerekir:
Defold aşağıdaki bileşen (component) türlerini destekler:
Eklentiler aracılığıyla başka bileşenler eklenebilir:
Bir oyun nesnesinin bileşenleri, oyun nesnesi oluşturulduğunda etkinleştirilir. Bir bileşeni devre dışı bırakmak istiyorsanız bunu bileşene bir disable iletisi göndererek yapabilirsiniz:
-- disable the component with id 'weapon' on the same game object as this script
msg.post("#weapon", "disable")
-- disable the component with id 'shield' on the 'enemy' game object
msg.post("enemy#shield", "disable")
-- disable all components on the current game object
msg.post(".", "disable")
-- disable all components on the 'enemy' game object
msg.post("enemy", "disable")
Bir bileşeni yeniden etkinleştirmek için bileşene bir enable iletisi gönderebilirsiniz:
-- enable the component with id 'weapon'
msg.post("#weapon", "enable")
Defold bileşen türlerinin her biri farklı özelliklere sahiptir. Düzenleyicideki Properties paneli, Outline panelinde o anda seçili olan bileşenin özelliklerini gösterir. Kullanılabilir bileşen özellikleri hakkında daha fazla bilgi edinmek için ilgili bileşen türlerinin kılavuzlarına bakın.
Görsel bileşenlerin genellikle konum ve dönme özellikleri, çoğu zaman da ölçek özelliği vardır. Bu özellikler düzenleyiciden değiştirilebilir ve hemen hemen hiçbir durumda çalışma sırasında değiştirilemez (tek istisna, çalışma sırasında değiştirilebilen sprite ve etiket bileşenlerinin ölçeğidir).
Bir bileşenin konumunu, dönmesini veya ölçeğini çalışma sırasında değiştirmeniz gerekiyorsa bunun yerine bileşenin ait olduğu oyun nesnesinin konumunu, dönmesini veya ölçeğini değiştirin. Bunun bir yan etkisi olarak oyun nesnesindeki tüm bileşenler etkilenir. Bir oyun nesnesine bağlı birçok bileşenden yalnızca birini değiştirmek istiyorsanız söz konusu bileşeni ayrı bir oyun nesnesine taşımanız ve bu nesneyi, bileşenin başlangıçta ait olduğu oyun nesnesine alt nesne olarak eklemeniz önerilir.
Görsel bileşenlerin çizim sırası iki şeye bağlıdır:
Her bileşene bir materyal (material) atanır ve her materyalin bir veya daha fazla etiketi vardır. İşleme betiği (render script) ise her biri bir veya daha fazla materyal etiketiyle eşleşen bir dizi işleme yüklemi (render predicate) tanımlar. İşleme betiğinin update() işlevinde yüklemler tek tek çizilir ve her yüklemde tanımlanan etiketlerle eşleşen bileşenler çizilir. Varsayılan işleme betiği önce sprite bileşenlerini ve karo haritalarını bir geçişte, ardından parçacık efektlerini başka bir geçişte çizer; her iki geçiş de dünya uzayında gerçekleşir. İşleme betiği daha sonra GUI bileşenlerini ekran uzayında ayrı bir geçişte çizmeye devam eder.
Tüm oyun nesneleri ve bileşenler, konumları vector3 nesneleriyle ifade edilen 3B uzayda yer alır. Oyununuzun grafik içeriğini 2B olarak görüntülediğinizde X ve Y değerleri bir nesnenin “genişlik” ve “yükseklik” eksenlerindeki konumunu, Z konumu ise “derinlik” eksenindeki konumunu belirler. Z konumu, üst üste gelen nesnelerin görünürlüğünü kontrol etmenizi sağlar: Z değeri 1 olan bir sprite bileşeni, Z konumu 0 olan bir sprite bileşeninin önünde görünür. Defold varsayılan olarak -1 ile 1 arasındaki Z değerlerine izin veren bir koordinat sistemi kullanır:

Bir işleme yüklemiyle eşleşen bileşenler birlikte çizilir ve çizilme sıraları bileşenin son z değerine bağlıdır. Bir bileşenin son z değeri, bileşenin kendisinin, ait olduğu oyun nesnesinin ve varsa tüm üst oyun nesnelerinin z değerlerinin toplamıdır.
Birden fazla GUI bileşeninin çizilme sırası, GUI bileşenlerinin z değeriyle belirlenmez. GUI bileşenlerinin çizim sırası gui.set_render_order() işleviyle kontrol edilir.
Örnek: A ve B adlı iki oyun nesnesi. B, A’nın alt nesnesidir. B’nin bir sprite bileşeni vardır.
| Öğe | Z değeri |
|---|---|
| A | 2 |
| B | 1 |
| B#sprite | 0.5 |

Yukarıdaki hiyerarşide, B üzerindeki sprite bileşeninin son z değeri 2 + 1 + 0.5 = 3.5 olur.
İki bileşenin z değeri tam olarak aynıysa sıralama tanımsızdır; bileşenler sırayla birbirinin önüne geçerek titreyebilir veya bir platformda bir sırayla, başka bir platformda farklı bir sırayla işlenebilir.
İşleme betiği, z değerleri için bir yakın düzlem ve bir uzak düzlem tanımlar. Z değeri bu aralığın dışında kalan bileşenler işlenmez. Varsayılan aralık -1 ile 1 arasındadır, ancak kolayca değiştirilebilir. Yakın ve uzak sınırları -1 ve 1 olduğunda Z değerlerinin sayısal hassasiyeti çok yüksektir. 3B varlıklarla çalışırken varsayılan izdüşümün yakın ve uzak sınırlarını özel bir işleme betiğinde değiştirmeniz gerekebilir. Daha fazla bilgi için İşleme kılavuzuna bakın.
game.project ayar dosyası, belirli bir kaynak (resource) türünden aynı anda en fazla kaç tane bulunabileceğini belirten birçok değer içerir. Bu sayılar genellikle yüklenen her koleksiyon (collection; dünya olarak da adlandırılır) için ayrı hesaplanır. Defold motoru, oyun çalışırken dinamik bellek ayırmayı ve bellek parçalanmasını önlemek için bu üst sınır değerlerini kullanarak gereken belleği önceden ayırır.
Defold’da bileşenleri (component) ve diğer kaynakları temsil etmek için kullanılan veri yapıları, mümkün olduğunca az bellek kullanacak şekilde optimize edilmiştir. Yine de gerçekten gerekenden fazla bellek ayırmamak için bu değerleri belirlerken dikkatli olunmalıdır.
Bellek kullanımını daha da optimize etmek için Defold’un proje derleme süreci oyunun içeriğini analiz eder ve tam sayının kesin olarak bilinebildiği durumlarda sayı üst sınırlarını geçersiz kılarak bu sayıyı kullanır: