# VGUI Creating Custom Elements

- **İngilizce aslı:** https://wiki.facepunch.com/gmod/VGUI_Creating_Custom_Elements
- **Çeviri tarihi:** 2026-03-07

Başlık Tag (VGUI Özel Elementler Oluşturuyor)

## 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.[DButton](https://gmod.tr/wiki/DButton)Her birini çalışkan bir şekilde yeniden şekillendirmek ve değiştirmek yerine.[DButton](https://gmod.tr/wiki/DButton)Ayrı ayrı olarak, tüm işlevsellikleri miras alan yeni bir öğe oluşturmayı hayal edin.[D Button](https://gmod.tr/wiki/DButton)Bu 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şturun[vgui.CreateFromTable](https://gmod.tr/wiki/vgui.CreateFromTable)Ama normalde bunu sadece özel bir amaç için yapmak istersin.**İçsel**Aynı 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ı](https://gmod.tr/wiki/Lua_Folder_Structure)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.lua`Aynı 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ı](https://gmod.tr/wiki/Lua_Folder_Structure)Sayfayı görebiliyoruz . Adonlarımız için özel bir sayfa olabilir .`lua/vgui`Yeni 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.

```lua
local PANEL = {}
```

Yukarıda bir local empty tablosu oluşturup adlandıracağız `PANEL`- Bu isim .*Dönüştürebilir*İstediğin her şey olabilir ama..`PANEL`Bu standart ve onu kullanman tavsiye edilir.

### İkinci Adım: Init Fonksiyonu

Init function is her zaman ilk [Panel Hook](https://gmod.tr/wiki/PANEL_Hooks)panel 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:Dock](https://gmod.tr/wiki/Panel:Dock)Eyalet.

```lua
function PANEL:Init()
	-- Default / Initial Values Setting Here
end
```

### 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ır**Her panel, görünen her çerçeveye boyanmalı yoksa görünmeyecektir.**Farklı**Dönüşüm .`Init`fonksiyon, bu [Panel Hook](https://gmod.tr/wiki/PANEL_Hooks)Her zamanki gibi.**Çerçeve**Şimdi iki kütüphanede tablo resimleri için tasarlanmıştır.[yüzey](https://gmod.tr/wiki/surface)Kütüphane. Bu kullanmak istediğiniz kütüphanedir.[çizim](https://gmod.tr/wiki/draw)Kütüphane.[çizim](https://gmod.tr/wiki/draw)Kütüphane sadece bir ambalaj [yüzey](https://gmod.tr/wiki/surface)Kütüphane yapmak için en zor şeylerden bazılarını yapar [yüzey](https://gmod.tr/wiki/surface)Daha kolay.[draw.RoundedBox](https://gmod.tr/wiki/draw.RoundedBox)

- Evet .[Çizim Kağıdı](https://gmod.tr/wiki/PANEL:Paint)her zaman iki argüman ile çağrılır; panelin genişliği ve yüksekliği (bazen `w`ve `h`) bu size panel genişliğine ve yüksekliğine kolayca erişmenizi sağlar.[yüzey](https://gmod.tr/wiki/surface)ve [çekme](https://gmod.tr/wiki/draw)fonksiyonları

```lua
function PANEL:Paint( width, height )
	- Yüzey ve çizim fonksiyonları buraya gider.
surface.SetDrawColor(255,0,0,255)
	surface.DrawRect( 0, 0, width, height ) -- Standart dikdörtgen çizmek için yüzeyi kullanmak
draw.RoundedBox( 15, 0, 0, width, height, Color(0,255,0,255))  -- Dönüştürerek yuvarlak yeşil kutu çizmek için
end
```

Yukarıdaki örnekler, her ikisinden de çok ilkel örnekler içerir.[yüzey](https://gmod.tr/wiki/surface)Ve ...[çekim](https://gmod.tr/wiki/draw)Şimdi bu fonksiyonların sırası [Renk Hükü](https://gmod.tr/wiki/PANEL:Paint)Eğer bu boya function ontop mevcut bir panelenin kopyasını yapıştırırsanız şöyle görünür: ![](https://gmod.tr/api/uploads/wiki/f785a66cffbb8a8cc18b.png)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](https://gmod.tr/wiki/surface)

Burada resim panelleri ile ilgili her şeyi kapsayacak değiliz ama akılda tutmamız gereken en önemli şey şu:[PANEL:NoClipping](https://gmod.tr/wiki/Panel:NoClipping)veya [Çıkarmayı Engelle](https://gmod.tr/wiki/Global.DisableClipping). 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.Register](https://gmod.tr/wiki/vgui.Register)Bu 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ı.

```lua
vgui.Register( "WikiExample", PANEL, "Panel")
```

Yukarıdaki, tamamlanmış bir örnektir.[vgui.Register](https://gmod.tr/wiki/vgui.Register)fonksiyon.

## Yeni Ürününüzü Kullanın

Yeni özel öğenizi kaydettikten sonra [vgui.Register](https://gmod.tr/wiki/vgui.Register)Adım 4'te , bu öğenizi ana proje dosyalarınızda kayıtlı adınızı kullanarak oluşturabilirsiniz .

```lua
local MyNewElement = vgui.Create( "WikiExample" )
```

## 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 Listesi](https://gmod.tr/wiki/VGUI_Element_List)Yeni 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 [DButton](https://gmod.tr/wiki/DButton)Kullanıcıya erişebilmek için `DoClick()`" gerçekte baktığınızda .[Nerede bu function comes](https://gmod.tr/wiki/DLabel:DoClick)Gerçekten sadece panelinizi bir [DLabel](https://gmod.tr/wiki/DLabel)erişime sahip olmak `DoClick()`

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/VGUI_Creating_Custom_Elements
