GDScript Rehberi – Godot

Bu yazıda Godot’un resmi scripting dili GDScript ile ilgili minik bir rehber hazırladım.

Gdscript nedir ?

Godot oyun motoru tarafından kullanılan açık kaynaklı bir scripting dilidir. Python benzeri bir yazımı olan kullanımı kolay bir dildir.

Bu yazıda gdscript ile ilgili en önemli kısımları ufak bir rehber şeklinde hazırladım. Daha fazla bilgi için kendi sitesine bakabilirsiniz.
Yazıda GDScriptten bazen GDS olarak bahsettim.

gdscript - godot programlama dili
https://godotengine.org/article/gdscript-progress-report-feature-complete-40/

Yorum satırları

Kodun içine eklenen yorumlar kodun anlaşılması için bilgi içerir. Kod derleyici tarafından derlenmez veya çalıştırılmaz.

GDS’de tek satır yorum için # sembolü kullanılır. Çoklu yorum satırı için üç tane kullanılır.

#Bu Gdscriptte tek satırlık bir yorumdur

"""
üç tane tırnak ile
çok satırdan oluşan
yorum yapabilirsiniz
"""

Değişken tanımlama

GDS’de değişkenleri var kelimesi ile tanımlarız. Sabitleri ise const kelimesi ile tanımlarız.

GDS’de diğer modern dillerde olduğu gibi int float boolean string array dictionary gibi tipler tanımlayabiliriz.

GDScript 4.0 ile birlikte artık GDS dinamik bir dil olsa da değişkenin tipini önceden belirleyebilirsiniz. Bunun için : işareti kullanılır.

var sayi = 40
var isim = "Godot dersleri"
var player = true
var liste = [1, false, "brown fox"]
var dictionary = {
  "key" : "value",
  40 : false
} 
var oyuncu_konumu = Vector2(1, 2)

const SPEED = 400 # Sabit değer
enum { ZERO, ONE , TWO, THREE } # Enum özel değerleri tanımlama


var isim : string # tipini tanımlama
var yaş : int

Konsola yazdırma

Oyunda hataları tespit etmek için veya bir fonksiyonun nasıl çalıştığını anlamak için kod içinden konsola yazı yazdırabiliriz.

Basitçe print( ) fonksiyonunu çağırmak yeterli.

print("GDScript ", "is ", " awesome.")
prints("These", "words", "are", "divided", "by", "spaces.")
printt("These", "words", "are", "divided", "by", "tabs.")
printraw("This gets printed to system console.")

Fonksiyon tanımlama ve çağırma

Belli bir iş yapması için fonksiyon tanımlayıp çağırabiliriz.

Fonksiyonlar func kelimesi ile tanımlanır. İsminin sonuna (): alır ve alttaki kod bloğu bir tab içeriden başlar.

return kelimesi ile geriye değer döndürür

func topla(sayi1,sayi2):
  return sayi1 + sayi2

Özel Godot fonksiyonları

Godot oyun akışını sağlamak için kendi özel fonksiyonlarına sahiptir. Bu fonksiyonları oyun motoru oyun başladığında veya her kare çağırır.

Bazı fonksiyon isimleri Godot’a özeldir.

func _init():
  # objenin oluşturulmasında

func _ready():
  # Obje hazır olduğunda

func _process(delta):
  # Her kare çağırılır
  # delta iki kare arası geçen zamandır. Oyunu optimize etmek için kullanılır
  
func _physics_process(delta):
  # fizik hesaplamaları için saniyede belli bir sayıda çağırılır.(örnek 60)

If – Else kontrolü

Kodun akışı ve yönünü belirlemek için if-else kontrollerini kullanırız.

Aynı fonksiyonda olduğu gibi iki nokta üst üste : ile biter ve altta bir tab içeri kod yazılır.

if x < y:
  print("x daha küçük")
elif x > y:
  print("x daha büyük")
else:
  print("x ile y eşit")

While kontrolü

while ile koşul sağlandığı sürece alttaki kod bloğunu çalıştırabilirsiniz.

break kelimesi döngüyü sonlandırır.
continue kelimesi o andan itibaren döngünün diğer adımına geçer

 while x > y:
    print(x, y)
    y += 1
    
while x < y:
    x += 1
    if x == 6:
      continue 
    prints("x :", x)
    if x == 7:
      break

For döngüsü

For döngüsü ile belli bir sayıda kod bloğunu çalıştırabilirsiniz.

Aynı zamanda for ile liste içinde gezebilirsiniz.

for i in 20: # 20 kere çalışması için bunu kullanabiliriz
    print(i) # 0 dan 19 a kadar sayıları yazar

for i in ["two", 3, 1.0]: # listede gezinme
    print(i)

Diğer node’lara erişme

GDS içinden bir node’a erişmek için dolar işareti $ ile adını yazarak erişilebilir.

Editörden basılı tutup koda sürükleyerek de referansını ekleyebilirsiniz.

var sprite = $Sprite

Sinyal kullanımı

Sinyaller Godot’ta bir olayı olduğunda haber vermek için kullanılan bir yapı.

Node’ların kendi sinyalleri olsa da özel sinyal de tanımlayabilirsiniz.

signal died() #Sinyali tanımlama
signal can(can_degeri) # Sinyalde parametre belirtme


died.emit() #Sinyali yayma
emit_signal('died')
emit_signal('can',75) # argüman ile sinyali yayma

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top