Unity3D ile 2D Geliştirmede Ekran Boyutlandırması

Bugün Unity3D içerisinde 2D olarak oyun geliştirirken oyun içerisinde “Sprite” yapılarının her cihazda aynı şekilde görüntülenmesine bakacağız. Genel olarak Android cihazların sayısı oldukça fazla. Bununla birlikte birbirinden farklı ekran çözünürlükleri kullanılıyor. Bu demek oluyor ki, bir oyun yapmaya başladığımız zaman oyunumuz farklı ekran çözünürlüklerinde oynanacak. Örneğin oyunda bir arka plan için bir “Sprite” koyduğumuzda her cihazda yatay ve dikey olarak kaplamasını isteyebiliriz. Yani ekranın sağında ve solunda boşluklar olması ya da altında veya üstünde boşlukların bulunması istenmeyen bir durum oluyor.
Okumaya devam et Unity3D ile 2D Geliştirmede Ekran Boyutlandırması

Unity3D PlayerPrefs Kullanımı

Bugün Unity3D ile C# kullanarak “PlayerPrefs” yapısına bakacağız. Genel olarak farklı oyun motorlarında veya native kodlama yapısında bu yapı değişik isimlerle mevcut. Burada Unity3D içerisinde bakacağız.
Oyunlarımızda her hangi bir giriş anında veya her hangi bir sahnede yapılmış sonuçları daha sonraki girişler de veya diğer sahnelerde kullanmak isteyebiliriz. Örneğin bir sahnemizde top ile elmas topladık ve diğer sahnede bunu toplam elmas değerini göstermek istiyoruz. Normal durumda o sahnede toplanan elmaslar sahne kapatılınca değişkenin değeri gideceği için daha sonra öğrenemeyiz. Ancak bunu bir “PlayerPrefs” ile birlikte cihazın hafızasında tutarsak daha sonra o değerlere erişmemiz mümkün olur.
Okumaya devam et Unity3D PlayerPrefs Kullanımı

Unity3D UI Sistemi Çapa Noktaları Yapısı

Bu yazımda kısaca Unity3D versiyon 4.6’dan sonra gelen “UI(User Interface)” yapısına bakacağız. Bununla birlikte çok sık olarak karşılaştığım “UI yapısının her telefonda aynı görünmesi” durumuna bakacağız. Kullanışlı ve temel olarak basit bir yapıdır.
Okumaya devam et Unity3D UI Sistemi Çapa Noktaları Yapısı

Unity3D Inspector Özellikleri – 1

Merhaba, bu yazımda Unity3D içerisinde ki “Inspector” alanında değişkenlerin yanında ekstra özellikler kullanmaya bakacağız. Bu yazıda kullanmış olduğum temel yapılardan bahsedeceğim. C# kullanmaktayım.
HideInInspector
Unity içerisinde C# yazarken “private” ve “public” değişken kullanırken biraz farklılık bulunmakta. “private” değişken “Inspector” panelinde görünmüyor ve Unity arayüzü üzerinden değiştirilemiyor. “public” değişken ise “Inspector” panelinde görünüyor ve Unity arayüzü ile değiştirmek mümkün. Ayrıca “private” değişken demek diğer script yapılarından o değişkene ulaşamamak demek. Bazen bir değişkenin Unity arayüzünde görünmesin ama başka bir script üzerinden o değişkene ulaşılmasını isteyebiliriz. Tabi bunu “getter-setter” metodlar ile de yapabiliriz. Eğer “getter-setter” metodları kullanmadan yapmak istersek, değişkenin önüne “[HideInInspector]” yazabiliriz.
Header
“Inspector” paneli içerisinde bir script içerisinde ki bir değişkene veya birden fazla değişkenin üzerine açıklama tarzında bir başlık eklememizi sağlamakta. Parametre olarak içerisine string bir değer almakta. Kullanımı ise, “[Header(“Header”)]” şeklindedir.
Space
Eğer “Inspector” paneli üzerinde iki değişken arasında boşluk bırakmak isterseniz “Space” yapısını kullanabilirsiniz. Parametre olarak float değer almakta. Kullanımı ise, “[Space(20.5f)]” şeklindedir.
Range
Eğer bir değişkenin belli bir değerler arasında değer almasını istiyorsak “Range” yapısını kullanabiliriz. İki farklı kullanım durumu var. Eğer altına yazdığımız değişken int tipinde ise “[Range(0, 5)]” şeklinde yazarak tam sayı olarak değişmesini sağlayabiliriz. İkinci alternatif olarak altına yazılan değer float tipinde ise “[Range(0f, 5f)]” şeklinde yazarak değerlerin virgüllü şekilde hareket etmesini sağlayabiliriz.
Tooltip
“Inspector” üzerinde bir değişkenin üzerine gelindiği zaman bir açıklama göstermek istersek “Tooltip” yapısını kullanabiliriz. Parametre olarak string bir değer almakta. Kullanım şekli ise, “[Tooltip(“Açıklama”)]”.
RequireComponent
Yukarıda incelediklerimiz dışında bu yapı biraz farklı. Öncelikle yukarıdakiler bir değişken için özel durumları ifade ediyordu. Bu yapı ise bir script için yazılmakta. Örneğin, script içerisinde o objeye ait “Rigidbody” değerini alacaksınız, eğer obje üzerinde “Rigidbody” eklenmemiş ise “GetComponent” ile alırken null olarak gelecek. Bunun önüne geçmek için o class üzerine “RequireComponent” ile “Rigidbody” ekliyoruz ve Unity arayüzünde scripti attığımız objeye otomatik olarak “Rigidbody” ekleniyor. Kullanımı ise, “[RequireComponent(typeof(Rigidbody))]”
Serializable
Son olarak “Serializable” yapısına bakalım. Script üzerinde bir tane sınıf yazdık ve bu sınıfın değerlerini arayüz üzerinden değiştirmek istiyoruz. Bir dizi yapısı kullanarak arayüz de göstermeye çalışırsak bu değişken görünmez. Göstermek için ise yazdığımız sınıfın üstüne “[Serializable]” eklememiz gerekmekte. Burada ek olarak kullandığımız yapı “System” altına yani “using System” olarak eklememiz gerekiyor.
Yanlış bilgi vermemeye çalışmak adına yazarken test ettiğim scriptin de arayüz içerisinden ekran görüntüsü ve scripti paylaşayım.
image-8-1

Teşekkürler, görüşmek üzere.