VGUI Creating Custom Elements
Neden Özel VGUI Elemleri Oluşturun?
Özel VGUI (Valve Graphical User Interface) öğelerinin geliştirilmesi, temel avantajlar olarak belirgin gelişmiş kod okuyabilirliği ve bakımlılığı ile birçok avantaj sunar. Bu yeni öğelerin her zaman tamamen orijinal bileşenlerin olması gerekmez; birçok durumda, oyunun temel panelleri için basit değişiklikler veya uzantılardır. Bu yaklaşımı benimsemekle, geliştirme sürecini hızlandırabilir ve UI öğelerini çok daha yönetilebilir hale getirebilirsiniz.
Genellikle çalışan bir projeyi hayal edin.DButtonHer birini çalışkan bir şekilde yeniden şekillendirmek ve değiştirmek yerine.DButtonAyrı ayrı olarak, tüm işlevsellikleri miras alan yeni bir öğe oluşturmayı hayal edin.D ButtonBu yaklaşım, tek bir yerde güçsüzce yeniden şekillendirmenize ve yeteneklerini geliştirmenize olanak tanır.
Şimdi sen .Düğün kullanarak aynı dosyada birden fazla öğe oluşturunvgui.CreateFromTableAma normalde bunu sadece özel bir amaç için yapmak istersin.İçselAynı dosya içinde sadece daha büyük bir Element'e hizmet etmek için var olan bileşenler.
Özel Bir Etkinlik Oluşturmak İçin Ana Adımlar
Önceden Bilgi
Bir panelin ne olduğunu ve nasıl oluşturulacağını derinlemesine incelemeye başlamadan önce, öncelikle VGUI öğelerinin yüklenmesi ve yerleştirilmesi hakkında bazı temel bilgiler kuralım.Addon yapısıVe daha büyükler içinde garrysmod/Dizinler.
Garry'nin Mod dosya sistemini temel olarak anladığınızı varsayarsak, burada bir çöküş kursu bulunmaktadır: eklenti klasörünüzün içindeki tüm içerikler esasen oyun kopyasındaki önceden var olan klasör yapısı ile "birleştirilir".*myAddonName*/lua/autorun/client/example.luaAynı yerde oturuyorlar.garrysmod/lua/autorun/client/example.lua
Bu, yeni öğeler oluştururken bunu kendi avantajımıza kullanmak iyi bir uygulama olduğu için vurgulanmaktadır.Addon yapısıSayfayı görebiliyoruz . Adonlarımız için özel bir sayfa olabilir .lua/vguiYeni vgui öğelerinizin oluşturulması ve depolanması gereken yer burası. Bunun avantajı yeni öğelerinizin yüklenmesi ve kaydedilmesi öntanımlı oyun ile gönderildiği gibi olacaktır. yani yükleme siparişinden endişe etmemiz gerekmez.
Son olarak dikkat edilmesi gereken birkaç şey var. Yeni öğelerinize potansiyel olarak son kullanıcı tarafından da yüklenmiş olabilecek diğer eklentilerle çarpışmamak için farklı isimler verilmelidir. Bunun iyi bir örneği, tüm oyunlar öntanımlı panellerinin önceden belirtilmiş olmasıdır.D. Dosya adınız sadece elementinizin adı olmalıdır. Bu kodu doğrudan etkilemez. Bunu yaparak kendinize daha sonra teşekkür edeceksiniz. Son olarak, elementleri nasıl oluşturduğunuzla ilgili akıllıca olun, bir Kızıl ve Mavi düğmenin kendi bileşenleri olması gerekmez, tek bir düğme bileşeni yapın ve her iki variantiyi de bireysel olarak biçimlendirin.
Adım 1: Tüm Elementler Tablo
Vgui öğeleri temelinde sadece zarif tablolardır. Bu, yeni bir öğe oluşturmanın ilk adımı bu öğeyi tanımlayacak tablo oluşturmaktır demektir.
Yukarıda bir local empty tablosu oluşturup adlandıracağız PANEL- Bu isim .Dönüştürebilirİstediğin her şey olabilir ama..PANELBu standart ve onu kullanman tavsiye edilir.
İkinci Adım: Init Fonksiyonu
Init function is her zaman ilk Panel Hookpanel oluşturulduğunda adlandırılır. Bu kanca sadece yaratıldığında bir kez çağrılır, bu nedenle normalde panel'in öntanımlı değerlerini ve statik değerlerini belirlemek için kullanılır.Panel:DockEyalet.
Adım 3: Boya Fonksiyonu
Bu function will panelin görünümünü belirler. Bu başlangıçta biraz algılansız olabilir, bu yüzden lütfen boya kağıdı'nın gerçekten nasıl çalıştığını anlamak için zaman ayırın.HayırHer panel, görünen her çerçeveye boyanmalı yoksa görünmeyecektir.FarklıDönüşüm .Initfonksiyon, bu Panel HookHer zamanki gibi.ÇerçeveŞimdi iki kütüphanede tablo resimleri için tasarlanmıştır.yüzeyKütüphane. Bu kullanmak istediğiniz kütüphanedir.çizimKütüphane.çizimKütüphane sadece bir ambalaj yüzeyKütüphane yapmak için en zor şeylerden bazılarını yapar yüzeyDaha kolay.draw.RoundedBox
- Evet .Çizim Kağıdıher zaman iki argüman ile çağrılır; panelin genişliği ve yüksekliği (bazen wve h) bu size panel genişliğine ve yüksekliğine kolayca erişmenizi sağlar.yüzeyve çekmefonksiyonları
Yukarıdaki örnekler, her ikisinden de çok ilkel örnekler içerir.yüzeyVe ...çekimŞimdi bu fonksiyonların sırası Renk HüküEğer bu boya function ontop mevcut bir panelenin kopyasını yapıştırırsanız şöyle görünür:
Neden? Çünkü çizim fonksiyonlarımız olarak adlandırdığımız sıraya bakın, önce kırmızı dikdörtgen çizdik ve sonra yeşil yuvarlak düzbuz çizdik.yüzeyleri
Burada resim panelleri ile ilgili her şeyi kapsayacak değiliz ama akılda tutmamız gereken en önemli şey şu:PANEL:NoClippingveya Çıkarmayı Engelle. ve çizdiğiniz sırada önemli olan, yukarıdaki kırmızı dikdörtgen ve yeşil yuvarlak kutuya bakın.
Dördüncü Adım: Yeni Ürününüzü Kaydetmek
Element'inizi kaydetmek her zaman element dosyasında yaptığınız son şey olmalıdır (daha iç elementler oluşturulmadıkça, sonra her iç element tamamlandıktan sonra kaydetin).vgui.RegisterBu function is element adınızı nasıl tanımlayacağınızı, kullandığımız oluşturulan tablonun adını (PANEL) ve bu öğeyi elde etmek istediğimiz bir temel panelin seçmeli adını.
Yukarıdaki, tamamlanmış bir örnektir.vgui.Registerfonksiyon.
Yeni Ürününüzü Kullanın
Yeni özel öğenizi kaydettikten sonra vgui.RegisterAdım 4'te , bu öğenizi ana proje dosyalarınızda kayıtlı adınızı kullanarak oluşturabilirsiniz .
Ek bilgi
Miras
Garry mod UI ile çalışırken mirası önemlidir. Garry'nin Mod varsayılan panelleri zaten kendi panelinizi oluştururken kullanabileceğiniz birçok işlevle birlikte geliyor.VGUI Element ListesiYeni panelini onlardan birinden alabilir ve biraz zaman kazandırabilir misin diye.
Bunun bir başka parçası fonksiyonların nereden geldiğini bilmek. popüler bir yanlış anlama "Panelimi bir DButtonKullanıcıya erişebilmek için DoClick()" gerçekte baktığınızda .Nerede bu function comesGerçekten sadece panelinizi bir DLabelerişime sahip olmak DoClick()
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord