Kategori arşivi Unity Dersleri

Materials Ayrıntılı Anlatımı

Materials Ayrıntılı Anlatımı

Material (Malzeme), Unity’de bir nesnenin yüzey özelliklerini tanımlamak için kullanılır ve nesnelerin renk, yansıma, saydamlık gibi görsel efektlerini kontrol eder. Material, 3D nesnelerde olduğu gibi 2D nesnelerde de kullanılabilir, ancak temel olarak 3D projelerde daha fazla işlev görür.

Material bileşeni, sahnedeki nesnelerin gerçekçi veya stilize bir görünüme sahip olmasını sağlar. Material bileşeninin yüzey özellikleri Shader adı verilen görsel işleme motorları ile belirlenir. Her material bir shader kullanır, ancak shader’ı değiştirdikçe material’in özellikleri de değişir.

1. Materials Menüsüne Nasıl Ulaşılır?

Unity’de Material bileşeni oluşturmak ve düzenlemek için şu adımları izleyebilirsiniz:

  1. Project Panelinde Material Oluşturma:
    • Assets paneline sağ tıklayın, ardından Create > Material seçeneğini tıklayın. Yeni bir Material oluşturulacaktır.
  2. Inspector Panelinde Material’i Düzenleme:
    • Material’i seçtiğinizde, sağ taraftaki Inspector panelinde Material özelliklerini görebilir ve düzenleyebilirsiniz.
  3. Nesneye Material Ekleme:
    • Bir nesneye material eklemek için oluşturduğunuz material’i doğrudan nesnenin üzerine sürükleyebilirsiniz. Alternatif olarak, Mesh Renderer bileşeninde Material alanına material’i sürükleyip bırakabilirsiniz.

2. Material Çeşitleri

Unity’de Material’ler, kullanılan shader türüne göre çeşitlenir. Material’in hangi türde görüneceğini belirleyen şey Shader’dır. Unity, farklı efektler için çeşitli yerleşik shader’lar sağlar. İşte en yaygın kullanılan shader türleri:

  • Standard Shader: Unity’nin varsayılan shader’ıdır ve pek çok özelliğe sahiptir. Nesnelerin saydamlığı, yansıması, metalik görünümü gibi özellikleri kontrol edilebilir.
  • Unlit Shader: Işıktan etkilenmeyen basit bir shader türüdür. Özellikle simgesel veya çizgi film tarzı grafikler için uygundur.
  • Transparent Shader: Saydam nesneler için kullanılır. Cam, su veya duman efektleri için idealdir.
  • Toon Shader: Çizgi film tarzı gölgelendirme sağlar ve stilize grafikler için uygundur.
  • HDRP ve URP Shader’ları: Unity’nin High Definition Render Pipeline (HDRP) ve Universal Render Pipeline (URP) shader’ları, yüksek kaliteli grafikler için optimize edilmiştir ve HDRP veya URP projelerinde kullanılır.

3. Material Özellikleri ve Ayrıntılı Açıklamaları

Aşağıda Material bileşeninin özelliklerini, ne işe yaradıklarını ve nasıl kullanıldıklarını ayrıntılı olarak açıkladığım bir tablo bulabilirsiniz:

ÖzellikAçıklamaKullanım DurumlarıProgramatik Erişim
Albedo (Renk)Nesnenin temel rengini veya dokusunu belirler. Material’in ana rengidir.Tüm nesnelerin temel renk ve dokusunu ayarlamak için.material.SetColor("_Color", Color.red);
MetallicNesnenin metalik görünümünü belirler. 0 ile 1 arasında değer alır. 1 değeri nesneyi tamamen metalik yapar.Metalik yüzeyler veya parlak metaller için yüksek değer kullanılabilir.material.SetFloat("_Metallic", 0.5f);
Smoothness (Pürüzsüzlük)Yüzeyin ne kadar yansıtıcı veya pürüzsüz olduğunu belirler. 0 ile 1 arasında değer alır.Cam veya parlak yüzeylerde yüksek, mat yüzeylerde düşük değer kullanılabilir.material.SetFloat("_Glossiness", 0.8f);
Normal MapNesnenin yüzeyine detay kazandıran bir harita ekler. Normallerin etkisini arttırır, yüzeye gerçekçilik katılır.Kabartma efektleri veya yüzey detayları vermek için kullanılır.material.SetTexture("_BumpMap", normalTexture);
Occlusion (Gölgeleme)Nesnenin çevresel gölgelenmesini belirler. 0 ile 1 arasında değer alır, yüzeyin gölge miktarını etkiler.Çevresel ışık alan yüzeylerde gölge derinliği sağlamak için kullanılır.material.SetFloat("_OcclusionStrength", 1.0f);
Emission (Emisyon)Nesnenin kendi ışığını yaymasını sağlar. Karanlıkta bile parlayarak dikkat çeken nesneler için kullanılır.LED ekranlar, ışık saçan nesneler veya neon efektleri için.material.SetColor("_EmissionColor", Color.blue);
Detail Map (Detay Haritası)Yüzeydeki ince detayları arttırmak için ek bir harita sağlar.Doku detaylarını arttırmak ve daha gerçekçi yüzeyler için kullanılır.material.SetTexture("_DetailAlbedoMap", detailTexture);
Rendering Mode (Render Modu)Nesnenin nasıl render edileceğini belirler: Opaque, Transparent, Cutout, Fade.Cam gibi saydam nesnelerde Transparent, mat nesnelerde Opaque.material.SetInt("_Mode", (int)UnityEngine.Rendering.BlendMode.Transparent);

Material Özelliklerine Programatik Erişim

Material bileşeninin özelliklerine C# kodu ile erişebilir ve bunları değiştirebilirsiniz. İşte Material özelliklerine kodla nasıl erişileceğini gösteren bir tablo:

ÖzellikKod ile Erişim ÖrneğiAçıklama
Albedo (Renk)material.SetColor("_Color", Color.red);Nesnenin temel rengini kırmızıya ayarlar.
Metallicmaterial.SetFloat("_Metallic", 0.5f);Nesnenin metalik görünümünü %50 olarak ayarlar.
Smoothness (Pürüzsüzlük)material.SetFloat("_Glossiness", 0.8f);Yüzeyi daha pürüzsüz ve yansıtıcı yapar.
Normal Mapmaterial.SetTexture("_BumpMap", normalTexture);Normaller haritasını ekler, yüzey detayları kazandırır.
Occlusion (Gölgeleme)material.SetFloat("_OcclusionStrength", 1.0f);Gölgeleme efektini maksimize eder.
Emission (Emisyon)material.SetColor("_EmissionColor", Color.blue);Emisyon rengi mavi olarak ayarlanır, yüzey parlak görünür.
Detail Map (Detay Haritası)material.SetTexture("_DetailAlbedoMap", detailTexture);Yüzeye ekstra detay haritası ekler.
Rendering Mode (Render Modu)material.SetInt("_Mode", (int)UnityEngine.Rendering.BlendMode.Transparent);Render modunu saydam hale getirir.

4. Material Özelliklerinin Değer Aralıkları ve Kullanım Durumları

Aşağıdaki tabloda Material bileşeninin özelliklerine ait değer aralıklarını ve hangi durumlarda hangi değerlerin kullanılabileceğini detaylandırdım:

ÖzellikDeğer Aralığı / SeçeneklerÖnerilen DeğerlerKullanım Durumları
Albedo (Renk)Renk paletiYüzeyin istenen rengine göreNesnenin ana rengini belirlemek için.
Metallic0 – 10.5 (Orta parlaklık), 1 (Tam parlaklık)Metalik yüzeylerde 0.5-1 arası, mat yüzeylerde daha düşük değerler tercih edilir.
Smoothness (Pürüzsüzlük)0 – 10.7 (Cam için), 0.2 (Ahşap için)Yansıtıcı yüzeyler için yüksek, mat yüzeyler için düşük değerler.
Normal MapDoku HaritasıNormal Map kullanımıYüzey detayları vermek için yüksek çözünürlüklü normal mapler tercih edilir.
Occlusion (Gölgeleme)0 – 11 (Yoğun gölgeler), 0.5 (Yumuşak gölgeler)Koyu gölge isteyen nesnelerde yüksek, hafif gölgelerde düşük değerler.
Emission (Emisyon)Renk paletiRenk ve ışık yayılımına göreLED ışıklar, neon tabelalar veya ışık saçan nesneler için parlak renkler tercih edilir.
Detail MapDoku HaritasıDetay yoğunluğuna göreKüçük detaylar, ince çizgiler veya yüzey efektleri için kullanılır.
Rendering ModeOpaque, Transparent, Cutout, FadeOpaque (Kapalı yüzey), Transparent (Saydam yüzey)Cam veya saydam yüzeylerde Transparent, katı yüzeylerde Opaque kullanılır.

5. Material Kullanım Alanları ve Dikkat Edilecekler

Kullanım Alanları

  1. Nesne Yüzeylerini Belirleme: Material, bir nesnenin rengini, yansımasını ve ışıkla olan etkileşimini belirler. Tüm nesnelerde kullanılabilir.
  2. Saydam ve Yarı Saydam Yüzeyler: Saydamlık gerektiren cam, su veya duman gibi efektlerde Material’in Transparent veya Cutout gibi render modları tercih edilir.
  3. Özel Shader ve Grafik Efektleri: Unity’nin yerleşik shader’ları dışında, özel shader’lar kullanarak daha gerçekçi ve karmaşık efektler elde edebilirsiniz.

Dikkat Edilmesi Gerekenler

  • Doğru Render Modu Kullanımı: Saydam yüzeyler için Transparent, mat yüzeyler için Opaque seçilmelidir. Yanlış render modu performansı düşürebilir.
  • Metalik ve Pürüzsüzlük Ayarları: Yüksek metalik ve pürüzsüzlük değerleri, özellikle mobil cihazlarda performans sorunlarına yol açabilir. Gereksiz yüksek değerlerden kaçınılmalıdır.
  • Texture Boyutları: Yüksek çözünürlüklü texture’lar, bellekte fazla yer kaplayabilir ve oyunun performansını düşürebilir. Texture boyutları optimize edilmelidir.

Uygulanmaması Gereken Nesneler

  • Arka Plan veya Statik Grafikler: Material, genellikle 3D nesnelerde kullanılır. Arka planlarda ve statik grafiklerde gereksiz kullanımdan kaçınılmalıdır.
  • UI Elemanları: 2D UI elemanlarında Sprite Renderer ve UI Material tercih edilmelidir. Standart Material, UI elemanları için fazla olabilir.

Özet

Dikkat Edilecek Noktalar: Doğru render modu kullanımı, texture boyutlarının optimize edilmesi ve metalik/pürüzsüzlük ayarlarına dikkat edilmelidir.

Materials Menüsüne Erişim: Project panelinde Create > Material yoluyla yeni bir material oluşturulur ve Inspector panelinde ayarlanır.

Çeşitleri: Material, Standard, Unlit, Transparent, Toon gibi farklı shader’larla özelleştirilebilir.

Özellikler ve Kullanımı: Albedo, Metallic, Smoothness, Normal Map gibi özellikler ile nesne yüzeyi üzerinde tam kontrol sağlanır.

Kullanım Alanları: Nesne yüzeyini tanımlamak, saydamlık veya parlaklık efektleri eklemek, özel shader’lar ile görsel kaliteyi artırmak için kullanılır.

1

TextMeshPro Ayrıntılı Anlatımı

TextMeshPro Ayrıntılı Anlatımı

TextMeshPro (TMP), Unity’deki metin bileşenlerinin daha keskin, detaylı ve etkileyici görünmesini sağlar. Standart Unity Text bileşenine kıyasla çok daha geniş özelliklere sahiptir. TextMeshPro, özellikle yüksek çözünürlüklü ve özelleştirilebilir metinlerle çalışmak için geliştirilmiş bir sistemdir ve metinleri grafiksel olarak çok daha etkileyici hale getirir.

TextMeshPro, hem UI (2D) hem de 3D metin olarak kullanılabilir. 2D UI metinleri için kullanıcı arayüzünde (menüler, butonlar gibi) yüksek kaliteli metin oluşturmak için idealdir. 3D metinlerde ise sahne içindeki 3D nesnelerin üzerinde metin göstermek için kullanılır.

1. TextMeshPro Menüsüne Nasıl Ulaşılır?

TextMeshPro bileşenine Unity’de şu şekilde ulaşabilirsiniz:

  1. UI Panelinde TextMeshPro UI Ekleme:
    • Hierarchy panelinde sağ tıklayın, UI > Text – TextMeshPro seçeneğini seçin. Bu seçenek, sahneye bir TextMeshPro UI bileşeni ekler. Bu metin, Unity’nin UI sistemine dahildir ve 2D kullanıcı arayüzleri için kullanılır.
  2. 3D Nesne Olarak TextMeshPro Ekleme:
    • Hierarchy panelinde sağ tıklayın, 3D Object > Text – TextMeshPro seçeneğini seçin. Bu seçenek, sahneye 3D nesne olarak bir TextMeshPro bileşeni ekler. Bu tür metinler, sahnede 3D nesne gibi davranır ve kamera perspektifine göre boyutları değişir.
  3. Inspector Panelinde TextMeshPro Özelliklerini Düzenleme:
    • TextMeshPro bileşenini seçtiğinizde, sağ tarafta yer alan Inspector panelinde TextMeshPro’nun tüm özelliklerini görebilir ve ayarlayabilirsiniz.

2. TextMeshPro Çeşitleri

TextMeshPro, kullanım alanına göre iki farklı türde bulunur:

  • TextMeshPro – UI: UI (kullanıcı arayüzü) elemanları için geliştirilmiş bir metin bileşenidir. 2D UI elemanlarıyla çalışırken yüksek çözünürlüklü ve ayrıntılı metinler oluşturur. Button, Panel gibi arayüz bileşenleri ile uyumludur.
  • TextMeshPro – 3D: 3D ortamda kullanılan bir metin bileşenidir. 3D sahnede metinleri nesneler gibi ekranda konumlandırabilir ve döndürebilirsiniz. Özellikle sahnede sabit olmayan metinler için tercih edilir.

3. TextMeshPro Özellikleri ve Ayrıntılı Açıklamaları

TextMeshPro’nun pek çok özelliği vardır ve metinlerin görünümünü, renklerini, gölgelendirmesini, hizalamasını ve daha birçok detayı ayarlamanıza olanak tanır. Aşağıdaki tabloda TextMeshPro bileşeninin önemli özelliklerini, ne işe yaradıklarını ve nasıl kullanıldıklarını ayrıntılı olarak bulabilirsiniz.

ÖzellikAçıklamaKullanım DurumlarıProgramatik Erişim
TextGörüntülenmesini istediğiniz metni belirler. Bu alan, metnin temel içeriğini içerir.Tüm metin elemanlarında kullanılır.textMeshPro.text = "Merhaba";
Font AssetMetin için kullanılan fontu belirler. TextMeshPro fontları özel bir format kullanır ve TMP_FontAsset olarak eklenir.Metin stilini değiştirmek istediğinizde kullanılır.textMeshPro.font = myFontAsset;
Font StyleMetin stilini belirler; Normal, Bold, Italic, Underline gibi seçenekler içerir.Farklı metin stilleri ile vurgulama yapmak için.textMeshPro.fontStyle = FontStyles.Bold;
Font SizeMetnin boyutunu ayarlar. Genellikle UI ve 3D metinler için kullanılır.Küçük veya büyük yazı boyutları gerektiğinde.textMeshPro.fontSize = 24;
AlignmentMetnin hizalamasını belirler; Left, Center, Right gibi seçenekler bulunur.Metnin sola, sağa veya ortaya hizalanması gerektiğinde.textMeshPro.alignment = TextAlignmentOptions.Center;
ColorMetnin rengini ayarlar.Öne çıkması gereken veya belirli bir tema rengine uyacak metinler için.textMeshPro.color = Color.red;
Gradient ColorMetne renk geçişi (gradient) ekler. TextMeshPro’nun yalnızca belirli versiyonlarında mevcuttur.Renk geçişleri ile daha ilgi çekici metinler için.textMeshPro.colorGradient = myGradient;
OutlineMetin etrafında bir kenarlık ekler.Metni daha belirgin hale getirmek için kenarlık eklemek gerektiğinde.textMeshPro.outlineWidth = 0.1f;
Outline ColorKenarlık rengini belirler.Kenarlığın görünümünü özelleştirmek için.textMeshPro.outlineColor = Color.black;
Character SpacingKarakterler arasındaki boşluğu ayarlar.Daha sıkı veya daha geniş metinler için karakter aralığını ayarlamak için.textMeshPro.characterSpacing = 1.0f;
Line SpacingSatırlar arasındaki boşluğu ayarlar.Metin paragrafları için satır boşluğunu özelleştirmek gerektiğinde.textMeshPro.lineSpacing = 1.2f;
Word SpacingKelimeler arasındaki boşluğu ayarlar.Geniş boşluklu veya daha sıkışık metinler için.textMeshPro.wordSpacing = 1.5f;
Enable Auto-SizingFont boyutunun otomatik olarak ayarlanmasını sağlar.Metnin boyutunu otomatik olarak kutuya sığdırmak gerektiğinde.textMeshPro.enableAutoSizing = true;
Max Visible CharactersGörüntülenebilecek maksimum karakter sayısını belirler.Belirli bir karakter sayısı sınırlaması yapmak istediğinizde.textMeshPro.maxVisibleCharacters = 50;
Rich TextZengin metin (bold, italic gibi) formatlarını destekler.Metinde stil değişiklikleri yapmak gerektiğinde.textMeshPro.richText = true;
Raycast TargetMetnin raycast hedefi olup olmadığını belirler. UI etkileşimleri için önemlidir.Metin üzerinde tıklama veya etkileşim yapılacaksa aktif edilir.textMeshPro.raycastTarget = true;

TextMeshPro Özelliklerine Programatik Erişim

TextMeshPro bileşenine C# kodu ile erişip özelliklerini değiştirebilirsiniz. Aşağıda her bir TextMeshPro özelliğine nasıl erişileceğini gösteren bir tablo hazırladım:

ÖzellikKod ile Erişim ÖrneğiAçıklama
TexttextMeshPro.text = "Merhaba";Metni ayarlar.
Font AssettextMeshPro.font = myFontAsset;Fontu değiştirir.
Font StyletextMeshPro.fontStyle = FontStyles.Bold;Yazı stilini ayarlar.
Font SizetextMeshPro.fontSize = 24;Yazı boyutunu ayarlar.
AlignmenttextMeshPro.alignment = TextAlignmentOptions.Center;Metni ortalar.
ColortextMeshPro.color = Color.red;Metin rengini kırmızı yapar.
Gradient ColortextMeshPro.colorGradient = myGradient;Metne renk geçişi ekler.
OutlinetextMeshPro.outlineWidth = 0.1f;Kenarlık ekler.
Outline ColortextMeshPro.outlineColor = Color.black;Kenarlık rengini siyah yapar.
Character SpacingtextMeshPro.characterSpacing = 1.0f;Karakterler arasındaki boşluğu ayarlar.
Line SpacingtextMeshPro.lineSpacing = 1.2f;Satır aralığını ayarlar.
Word SpacingtextMeshPro.wordSpacing = 1.5f;Kelimeler arasındaki boşluğu ayarlar.
Enable Auto-SizingtextMeshPro.enableAutoSizing = true;Yazı boyutunu otomatik ayarlama.
Max Visible CharacterstextMeshPro.maxVisibleCharacters = 50;Görüntülenebilecek maksimum karakter sayısını belirler.
Rich TexttextMeshPro.richText = true;Zengin metin formatlarını aktif eder.
Raycast TargettextMeshPro.raycastTarget = true;Metnin raycast hedefi olup olmadığını belirler.

4. TextMeshPro Özelliklerinin Değer Aralıkları ve Kullanım Durumları

Aşağıdaki tabloda TextMeshPro özelliklerinin değer aralıklarını ve hangi durumlarda hangi değerlerin kullanılabileceğini detaylandırdım:

ÖzellikDeğer Aralığı / SeçeneklerÖnerilen DeğerlerKullanım Durumları
Font Size1 – 500+ (Projeye göre değişir)12-24 (UI için), 36+ (Başlıklar için)Küçük metinler için küçük, başlıklar için büyük boyutlar tercih edilir.
AlignmentLeft, Center, Right, JustifiedLeft (Genel), Center (Başlıklar)Paragraf veya uzun metinlerde sol, başlıklar için merkez hizalama.
Outline Width0 – 10.1 – 0.5Hafif kenarlık için düşük, belirgin kenarlık için yüksek değer.
Character Spacing0 – ∞0.5 – 1.5Geniş boşluklu veya sıkışık metinler için.
Line Spacing0 – ∞1.0 – 1.5Metin paragrafları veya başlıklar için.
Word Spacing0 – ∞1.0 – 1.5Geniş veya sık kelime boşlukları için.
Max Visible Characters0 – ∞İhtiyaca göreSınırlı metin gösterimi yapmak gerektiğinde.

5. TextMeshPro Kullanım Alanları ve Dikkat Edilecekler

Kullanım Alanları

  1. UI Metinleri: TextMeshPro – UI, kullanıcı arayüzlerinde (menüler, butonlar) yüksek kaliteli metinler oluşturmak için kullanılır.
  2. 3D Metinler: TextMeshPro – 3D, sahne içinde 3D nesneler üzerinde metin göstermek için idealdir, örneğin karakterlerin isimleri veya bilgi etiketleri gibi.
  3. Etiketler ve Bilgilendirme Panelleri: Oyun içinde bilgi panelleri veya uyarı mesajları için kullanılabilir.

Dikkat Edilmesi Gerekenler

  • Font ve Boyut Seçimi: Çok küçük fontlar okunması zor olabilir, çok büyük fontlar ise UI tasarımını bozabilir.
  • Auto-Sizing Kullanımı: Otomatik boyutlandırma özelliği dikkatli kullanılmalıdır. Metinler çok küçük veya çok büyük olabilir.
  • Kenarlık ve Gölge Ayarları: Kenarlık ve gölge özellikleri abartılı kullanılırsa metinlerin okunabilirliğini düşürebilir.
  • Raycast Target: Gereksiz raycast hedefleri performansı düşürebilir, raycast sadece tıklanabilir metinlerde kullanılmalıdır.

Uygulanmaması Gereken Nesneler

  • Statik Arka Planlar veya Grafikler: Arka planda sabit görsellerde kullanılmaz.
  • Performans Kısıtlı Projeler: Çok fazla TextMeshPro bileşeni, mobil cihazlarda performansı etkileyebilir.

Özet

Dikkat Edilecek Noktalar: Auto-Sizing, kenarlık ayarları, raycast kullanımı performans açısından önemlidir.

TextMeshPro Ekleme: UI > Text – TextMeshPro veya 3D Object > Text – TextMeshPro yoluyla eklenir.

Çeşitleri: TextMeshPro – UI (2D arayüz) ve TextMeshPro – 3D (sahne içi 3D metin).

Özellikler ve Kullanımı: Text, Font Size, Color, Outline, Gradient gibi birçok özelliği bulunur.

Kullanım Alanları: UI metinleri, 3D etiketler, bilgi panelleri.

1