Kavramlar - Temel Sınıflar
Terimler ve Tanımlar
Bir Sınıf (Class), kodda tanımlanmış ve Örnekler (Instances) için bir şablon görevi gören Fonksiyonlar ve Değişkenler topluluğudur.
Örnek olarak Oyuncu (The Player), Varlıklar (Entities), Oyun Modları (Gamemodes), VGUI Elemanları (VGUI Elements) ve daha fazlası verilebilir.
Bir Örnek (Instance), oyunda aktif olan bir Sınıfın kopyasıdır. Tek bir Sınıfın birden fazla Örneği aynı anda aktif olabilir.
Örneğin: Sandbox Oluşturma Menüsünden bir nesne (prop) oluşturulduğunda, oyun prop_physics Sınıfının bir Örneğini oluşturur.
prop_physics Sınıfı kodda yalnızca bir kez tanımlanır, ancak herhangi bir sayıda Örnek oluşturmak için kullanılabilir.
Bilgisayar donanımını verimli kullanmak için, bir Sınıfın mantığı her Örneğe kopyalanmaz, bunun yerine tüm Örnekler Sınıftaki aynı tanıma geri döner. Bu işlem Meta Tabloları (Meta Tables) aracılığıyla gerçekleştirilir.
Bir Temel Sınıf (Base Class) (veya Ebeveyn Sınıf - Parent Class), bir Sınıfın (Ebeveyn Sınıfın Alt Sınıfı - Child Class) varsayılan olarak sahip olduğu Fonksiyonlar ve Değişkenler kümesidir. Ebeveyn Sınıf tarafından verilen (veya miras alınan) davranış, Ebeveyn Sınıftan Miras Alınan Fonksiyonlara ve Değişkenlere ekleme yapılarak, bunların üzerine yazılarak ve değiştirilerek Alt Sınıfta düzenlenir. Bu, bir Sınıfın, diğer Sınıfın mantığını sıfırdan yeniden oluşturmaya gerek kalmadan davranışını kopyalamasına olanak tanır. Mantığın gereksiz yere kopyalanmasını önlemek için, bir Alt Sınıf, bir Fonksiyon veya Değişken için üzerine yazılmış bir tanıma sahip olmadığı durumlarda Ebeveyn Sınıfının Meta Tablosuna başvurur.
Not: Tüm Sınıfların tam olarak bir (1) Temel Sınıfı olmalıdır, ancak herhangi bir sayıda Alt Sınıfı olabilir.
Temel Sınıfları Nasıl Kullanırsınız?
Örnek
Aşağıdaki örnek, bir Varlığın (Entity) birden fazla Alt Varlık için nasıl Temel Sınıf olarak kullanılabileceğini göstermektedir.
Ebeveyn Sınıf (sent_parentclass.lua), Varlığın modelini ve fiziğini ayarlamaya yönelik tüm mantığı ve Varlığın benzersiz davranışının arkasındaki mantığı yönetir. Bu durumda, benzersiz davranış, varlık çizilmeden önce rastgele bir görsel efektin etkinleştirilmesi ve çizildikten sonra devre dışı bırakılmasıdır. Ebeveyn Sınıfta, bu görsel efekt Varlığı sadece maviye çevirir.
Alt Sınıflar (sent_childclass_1.lua ve sent_childclass_2.lua), Temel Sınıflarının (sent_parentclass.lua) mantığını koruduğu için, farklı görsel efektler oluşturmak amacıyla çok az miktarda kod eklemeleri yeterlidir.
sent_childclass_1.lua, görsel efekti etkinleştiren fonksiyonun üzerine yazar ve Ebeveyn Sınıfın mavi renk efektini bir gökkuşağı renk efektiyle değiştirir.
sent_childclass_2.lua, görsel efektin hem etkinleştirme hem de devre dışı bırakma fonksiyonlarının üzerine yazar. Bunlar, Varlığın (artık bir lastik gibi görünen) hareketsizken bile sürekli dönüyormuş gibi görünmesini sağlayan fonksiyonlarla değiştirilir.
sent_parentclass.lua
sent_childclass_1.lua
sent_childclass_2.lua
1. Ebeveyn Sınıf
sent_parentclass (Mavi sandık)2. Birinci Alt Sınıf
sent_childclass_1 (Gökkuşağı sandık)3. İkinci Alt Sınıf
sent_childclass_2 (Dönen lastik)
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord