Derma Temel Rehberi
Derma Nedir?
Derma, Garry ve TAD2020 tarafından oluşturulmuştur ve oyun modunuz veya eklentiniz için ekran menüleri oluşturmanın en kolay yoludur.
Derma, kodunun yalnızca bir kez çalıştırılması gerektiği için vgui'den farklıdır, bu nedenle Derma kodunu ASLA
GM:HUDPaint veya benzeri fonksiyonların içine koymamalısınız, çünkü bunlar her karede çağrılır. Hayatınızı kolaylaştırmak için Derma kodunuzu bir fonksiyona sarmalı ve bir menü oluşturmanız gerektiğinde onu çağırmalısınız ve her zaman yerel değişkenler kullanmalısınız. Global bir işaretçi kullanmanız gerekiyorsa, onu spesifik veya bir tablo üyesi yapın. DLabel = vgui.Create( "DLabel" ) kötü bir kodlama pratiğidir ve muhtemelen bir şeyin üzerine yazacaktır.
Derma istemci taraflıdır ve sunucudan çağırmak isterseniz net kütüphanesini kullanmanız gerekir.
Derma'nın yaşı nedeniyle, Garry's Mod'da bazı öğeler kullanımdan kaldırılmıştır, bkz. VGUI_Element_List. Bu wikideki Derma sayfalarının çoğu işlevsel panellere yönlendirir.
Başlarken
Yapmanız gereken ilk şey bir DFrame oluşturmaktır, çünkü bu, Derma'yı yerleştirmek için tabiri caizse tuvaliniz olacaktır.
Kod
Çıktı

Derma'yı Boyama
Bu Nedir?
Derma, Lua kodlayıcısı için ne kadar yararlı olsa da, görünüşü oldukça çirkindir ve bazen gerçekten güzel görünen bir menü istersiniz. Bunu, her bir Derma öğesinde yapabileceğiniz panelin Paint fonksiyonunu geçersiz kılarak çözebilirsiniz. Fonksiyonu geçersiz kılmak, üzerine bir şey çizene kadar panelin görünmez olacağı anlamına gelir; mevcut panelin üzerine çizim yapmak isterseniz PANEL:PaintOver fonksiyonunu deneyebilirsiniz.
Örnek Kod
Çıktı

Kullanıcı Girdileri
Onlardan nasıl veri alacağınızı bilmiyorsanız Derma menüleriniz pek işe yaramayabilir; bu veri kullanıcı tarafından yazılmış bir metin, bir düğme tıklaması veya bir onay kutusu olabilir.
Oyuncunun adını girebileceği ve enter'a bastığında tepki veren bir DTextEntry oluşturalım! Ardından girilen değeri daha sonra başvurmak üzere bir değişkene atayabilir veya hatta net kütüphanesini kullanarak adlarını kaydetmek için sunucuya gönderebiliriz.
Örnek Kod
Şimdi diyelim ki oyuncunun bir renk seçmesini istiyoruz, bu renk oyuncu modelini veya sohbetteki adını renklendirmek için kullanılabilir ve ardından bir düğmeye basarak bunu onaylarlar.
Örnek Kod
Çıktı

Ölçeklendirme
Bu Nedir?
Garry's Mod oynayan herkes sizinle aynı çözünürlüğe veya monitör boyutuna sahip değildir ve bu nedenle Derma'nızı neredeyse herkesin monitöründe çalışacak şekilde oluşturmalısınız. Bunu, ilgili boyutlarını tamsayı olarak döndüren ScrH ve ScrW fonksiyonlarını kullanarak başarabilirsiniz. Projenize başlarken bu konuda endişelenmeniz gerekmez, çünkü sabit boyutlarla çalışmak daha hızlıdır, ancak Derma'nız oldukça büyükse bu çok önemlidir.
Nasıl Yapılır?
Yapmanız gereken ilk şey monitör çözünürlüğünüzü bulmaktır, benimki 1920 x 1080 ve bu eğitim için bunu kullanacağım. Çözünürlüğünüzü bulmanın en kolay yolu print ve ekran boyutu fonksiyonlarını kullanmaktır.
Şimdi bu çerçeveyi oluşturduğumuzu ve oyuncunun ekranının ortasında olmasını ve buna göre boyutlandırılmasını istediğimizi varsayalım
Bunu verimli bir şekilde yapmak için, istediğimiz boyutu ekran çözünürlüğümüze bölerek ve ScrW ile ScrH fonksiyonlarını kullanarak Panel:SetSize metoduna bir matematik işlemi koyabiliriz:
Artık bu DFrame sizin çözünürlüğünüzde 400x300 olacak ve diğer tüm çözünürlüklerde de boyutlanacaktır. Daha sonra bu çerçeve üzerindeki bir DButton'ı, boyutunu çerçevenin boyutuna bölerek ölçeklendirebilirsiniz ve üst öğesine göre ölçeklenecektir.
Çizim kodundaki gereksiz işlemleri azaltmak için daha sonra statik hesaplamaları hesaplanmış değerlerle değiştirmeniz önerilir:
Kaynaklar
Ne yazık ki, Derma'daki çok sayıda fonksiyon nedeniyle hepsi henüz belgelenmemiştir, ancak kaynak kodunu kendiniz arayabilir ve bu fonksiyonların nasıl çalıştığını çözebilirsiniz!
Çevrimiçi bir depoyu burada bulabilirsiniz: https://github.com/garrynewman/garrysmod/tree/master/garrysmod/lua/vgui veya yerel Garry's Mod dizininizdeki garrysmod\lua\vgui klasörüne bakabilirsiniz.
Tüm Derma öğelerinin bir listesi burada bulunabilir.
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord