‘UNITY 3D’ Kategorisi için Arşiv

Yeniden merhabalar,

Unity’de karmaşık bir UI hiyerarşisine sahip olduğunuzda, Scene panelinden belli bir UI objesini seçmek için defalarca kez objenin üzerine tıklamanız gerekebilir. Bu süreci kolaylaştırmak adına bir editör script yazdım:

Yapmanız gereken, projenizin Editor klasöründe (bu klasör yoksa oluşturun) SceneViewUIObjectPickerContextWindow adında yeni bir C# script oluşturmak ve script’in içeriğini şuradaki kodla değiştirmek: https://gist.github.com/yasirkula/06edc780beaa4d8705b3564d60886fa6

Artık Scene panelde bir UI objesinin üzerine sağ tıklayarak, o konumda yer alan tüm UI objelerini bir listede görebilir ve istediğinizi kolayca seçebilirsiniz.

Başka derslerde görüşmek dileğiyle!

Uzun bir aranın ardından tekrardan merhabalar,

Unity’de bazen elinizdeki bir sprite için 1024 piksel gereksiz büyük, 512 piksel ise fazla küçük kalıyor olabilir ve sprite’ı bu iki değer arasında bir çözünürlüğe düşürerek, build boyutunu olabildiğince optimize etmek istiyor olabilirsiniz. Orijinal sprite’ı bir resim editöründe yeniden boyutlandırmaya gerek kalmadan, doğrudan Unity içerisinden bunu başarabilmek için basit bir editör script’i yazdım:

Yapmanız gereken, projenizin Editor klasöründe (bu klasör yoksa oluşturun) CustomMaxSizeSetter adında yeni bir C# script oluşturmak ve script’in içeriğini şuradaki kodla değiştirmek: https://gist.github.com/yasirkula/dc9ec65016714fbb3747b1de6719d9b7

Ardından Window-Custom Max Size Setter penceresinden, seçili sprite’ların Max Size değerlerini istediğiniz gibi ayarlayabilirsiniz. ASTC harici sıkıştırma (compression) yöntemlerinde, 2’nin veya 4’ün katı olmayan resimlerin boyutu çok fazla yükselebilir. Bunun önüne geçmek için sprite’larınızı Sprite Atlas‘lara dahil etmeniz yeterli. Aksi taktirde bu yöntem faydadan çok zarar verebilir.

Sağlıcakla kalın!

Yeniden merhabalar,

Asset Store’dan projenize import ettiğiniz veya ekibinizdeki grafikerlerden aldığınız Texture’ların bazen tek bir tanesinin bile onlarca MB (ender durumlarda yüzlerce MB) yer kapladığına şahit olabilirsiniz. Bu durum genelde resmin sıkıştırılmamış TIFF veya TGA gibi bir formatta olmasından kaynaklanır. Bu resimleri PNG‘e çevirerek, kalitede hiçbir bozulma olmadan bu dosyaların boyutlarını ciddi miktarlarda düşürebilirsiniz. Örneğin ben Asset Store’dan import ettiğim bir 3D asset’in bu tarz Texture’larını PNG’e çevirerek, projenin boyutunu 1.08 GB’dan 510 MB’a kadar düşürdüm. Yanlış anlaşılma olmasın: Texture’ların sadece Unity projesinde kapladığı alan düşüyor, build alınan oyunun boyutu değişmiyor. Ama bu bile, projenin harddiskinizde daha az yer kaplaması veya projenin daha kolay yedeklenebilmesi gibi konularda yardımcı oluyor.

Bu iş için yazdığım editör script’ini görmek için yazının devamını okuyabilirsiniz…

(daha…)

Unity Çerez Ders: Projenizdeki Klon (Duplicate) Asset’leri Bulmak

Yayınlandı: 21 Aralık 2020 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Merhabalar,

Bir Unity projesinde birden çok kişi çalışıyorsanız, aynı asset’in projeye birden çok kez eklendiğine şahit olabilirsiniz. Bu da projenin boyutunun gereksiz yere büyümesine sebep olabilir. Projedeki hangi asset’lerin birbirinin klonu olduğunu bulabilmek için, basit bir editör script’i yazdım:

Yapmanız gereken, projenizin Editor klasöründe (bu klasör yoksa oluşturun) DuplicateAssetDetector adında yeni bir C# script oluşturmak ve script’in içeriğini şuradaki kodla değiştirmek: https://gist.github.com/yasirkula/f96802da4cf6f5fbb0c76d8322463a88

Ardından Window-Duplicate Asset Detector ile Duplicate Assets penceresini açıp Refresh butonuna tıklayabilirsiniz. Burada dikkat etmeniz gereken 3 nokta var:

  • Hangi asset’lerin birbirinin klonu olduğunu bulabilmek için, script her asset’in hash’ini çıkarıp bu hash’leri birbiri ile kıyaslıyor. Çok ender de olsa, farklı asset’lerde hash çakışması olabilir ve klon olmayan asset’ler klon gibi listelenebilir. İlaveten, script sadece hash’lere baktığı için, asset’lerin import ayarlarına bakmıyor. Bu duplicate asset’lerin import ayarlarını siz kendiniz kontrol etmeli ve hangi duplicate asset’lerin gereksiz olduğuna ona göre karar vermelisiniz.
  • Listelenen konumlardan birine çift tıklarsanız, o konumdaki asset otomatik olarak seçilir.
  • Duplicate asset’lerin önizlemelerinden birine tıklarsanız, o duplicate asset’lerin hepsi otomatik olarak seçilir.

Başka derslerde görüşmek üzere!

Unity LOD Sistemi

Yayınlandı: 17 Ekim 2020 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Hepinize merhabalar,

Bu derste, Unity‘nin LOD (Level of Detail) sistemini göreceğiz. Bu sistem, yüksek poligonlu bir modelin kameradan uzaklaştıkça daha az poligon ile ekrana çizilmesini sağlayarak oyunun performansını artırır.

Hızlıca derse başlayalım…

(daha…)

Yeniden merhabalar,

Unity‘de bir dizi veriyi UI‘da göstermek için Scroll View kullanmak idealdir (örneğin oyun içi market veya leaderboard). Ancak göstereceğiniz verinin boyutu arttıkça (örneğin leaderboard’da binlerce satır [entry] göstermek isteyebilirsiniz), Scroll View’ın performansı düşecektir çünkü her bir entry için ayrı bir UI GameObject’i oluşturacaksınız. Bu performans sorununu çözmenin yolu, her bir entry için ayrı bir GameObject oluşturmak yerine, sadece ekranda görünen entry’ler için elimizde bir düzine UI GameObject’i tutup onları tekrar tekrar kullanmaktır. Bunun için, diyelim Scroll View’ı aşağı kaydırdıkça, ekranın üst kenarından dışarı çıkan GameObject’leri ekranın alt kenarına ışınlayıp tekrardan kullanabiliriz. Böylece sadece birkaç GameObject ile binlerce entry’i Scroll View’da gösterebiliriz:

Hazırsanız derse başlayalım!

(daha…)

Merhabalar,

Unity‘nin Hierarchy paneline 2019.1 sürümü ile görünürlük (göz) gizmo’su, 2019.3 sürümü ile de tıklanabilirlik (parmak) gizmo’su eklendi:

Bir objenin solundaki görünürlük gizmo’suna tıklayarak, o objeyi Scene panelinden gizleyebilirsiniz (obje Game panelinde gözükmeye devam eder). Eğer child objeleri olan bir objenin görünürlük gizmo’suna tıklarsanız, child objeler de otomatik olarak Scene panelinden gizlenir. Bunu istemiyorsanız, Alt tuşu basılıyken gizmo’ya tıklayarak sadece tıkladığınız objeyi gizleyebilirsiniz. Görünürlük gizmo’larının işe yaraması için, Scene panelindeki ilgili butonun aktif olması gereklidir:

Görünürlük gizmo’su, 4 farklı ikon ile gösterilir:

  • Obje gizlenmemiştir ancak child objelerinden bazıları gizlenmiştir
  • Obje gizlenmiştir ancak child objelerinden bazıları gizlenmemiştir
  • Obje ve tüm child objeleri görünür durumdadır, gizlenmemiştir. Bu ikon sadece objenin üzerine fare imlecini getirince gözükür
  • Obje ve tüm child objeleri gizlenmiştir

Bazen sahnedeki bir objeye odaklanmak için, diğer tüm objeleri gizlemek isteyebilirsiniz. Bunun için o objeyi seçip Shift+H kısayolunu kullanarak Isolation görünümüne geçiş yapabilirsiniz. Tekrar Shift+H kısayolunu kullanarak da bu görünümden çıkabilirsiniz. Isolation görünümündeyken, Hierarchy’deki görünürlük gizmo’larına yaptığınız değişiklikler kaydedilmez, Isolation görünümünden çıktığınızda bu değişiklikler kaybolur.

Tıklanabilirlik gizmo’sunun kullanımı ise oldukça basit: bazı objelerin Scene panelinde görünür olmasını istiyor ancak tıklayınca seçilmesini istemiyorsanız, o objelerin tıklanabilirlik gizmo’larını kullanabilirsiniz. Görünürlük gizmo’sundaki 4 farklı ikon, tıklanabilirlik gizmo’su için de geçerli.

Başka derslerde görüşmek üzere!

Unity Çerez Ders: unitypackage’ları Ayıklamak (Unzip Yapmak)

Yayınlandı: 17 Eylül 2020 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Merhabalar,

Diyelim ki Unity oyununuza müzik ekleyeceksiniz ve bunun için Asset Store‘dan güzel bir asset satın aldınız. Paketin içinde yüzlerce müzik var; ayıptır söylemesi boyutu da 1.5 GB. Paketten güzel bir müzik seçebilmek için asset’i projenize ekliyorsunuz ve.. e tabi asset o kadar büyük olunca import işleminin bitmesi için 1 saat bekliyorsunuz. Bu süreci optimize etmek için basit bir editör script yazdım. Bu script vasıtasıyla, bir unitypackage‘ın içindeki tüm asset’leri istediğiniz klasöre çıkarabilirsiniz. Verdiğim örnekte, müzik paketini Asset Store’dan indirdikten sonra projenize import etmek yerine, bu editör script’i ile indirilen unitypackage’ın içeriğini projenizin dışında bir klasöre çıkarabilir, oradan istediğiniz müziği beğenebilir ve son olarak da sadece o müziği Unity projenize import edebilirsiniz.

Yapmanız gereken, projenizin Editor klasöründe (bu klasör yoksa oluşturun) UnitypackageExtractor adında yeni bir C# script oluşturmak ve script’in içeriğini şuradaki kodla değiştirmek: https://gist.github.com/yasirkula/dfc43134fbfefb820d0adbc5d7c25fb3

Ardından Window-Unitypackage Extractor ile Unitypackage Extractor penceresini açabilirsiniz. Gelen pencerede “.unitypackage Path“e unitypackage dosyasının konumunu, “Output Path“e de içeriğin hangi klasöre çıkarılacağını girip Extract! butonuna basabilirsiniz.

İPUCU: Asset Store’dan indirdiğiniz unitypackage’ları Windows 10’da %APPDATA%\Unity\Asset Store-5.x konumunda bulabilirsiniz.

Başka derslerde görüşmek üzere!

Merhabalar,

Unity‘nin Slider’larında yuvarlak kenarlara sahip bir 9-sliced sprite kullanmayı denediyseniz, slider’ın Value’su çok ufakken bu sprite’ın scale olduğunu ve bu esnada çirkin durduğunu fark etmişsinizdir. Eğer keşke 9-sliced bir sprite’ı Image‘ın Fill moduyla kullanabilsek dediyseniz, yazdığım script işinize yarayacaktır:

Yapmanız gereken, projenizde SlicedFilledImage adında yeni bir C# script oluşturmak ve script’in içeriğini şuradaki kodla değiştirmek: https://gist.github.com/yasirkula/391fa12bc173acdf5ac48c466f180708

Ardından Canvas‘ınızdaki içi boş bir GameObject’e Sliced Filled Image component’ini eklemeniz yeterli. Slider’ın doluluk oranını değiştirmek için, component’in fillAmount değişkenine [0, 1] aralığında bir değer verebilirsiniz.

Sonraki derste görüşmek üzere!

Unity Çerez Ders: Scene Panelinde UI Objelerini Gizlemek

Yayınlandı: 15 Eylül 2020 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Yeniden merhabalar,

Unity‘de sahneyi Scene paneli üzerinden düzenlerken, bazen “Screen Space-Overlay” canvas objeleriniz diğer objelerin üzerine gelerek onlara tıklamanızı zorlaştırabilir. Bu sorunu çözmek için basit bir editör script’i yazdım.

Yapmanız gereken, projenizin Editor klasöründe (bu klasör yoksa oluşturun) UIToggler adında yeni bir C# script oluşturmak ve script’in içeriğini şuradaki kodla değiştirmek: https://gist.github.com/yasirkula/e4068629a8a97e1bf0dedfc3cc1ed27f

Artık Scene panelinin sol üstündeki Hide Canvas butonuna tıklayarak, canvas’ları Scene panelinden gizleyebilirsiniz. Aynı butona tekrar basarak canvas’ları geri görünür hale getirebilirsiniz.

Başka derslerde görüşmek üzere!