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ı

Android AsyncTask Kullanımı

Bu gün Android için “AsyncTask” yapısına bakacağız. Bazı işlemleri yaparken ve bu işlemler uzun sürme ihtimalleri var ise bu işlemler normal akış içerisinde yapılmaması gerekir. Sebebi ise bu işlemler yapılırken uygulama donabilme ihtimali olduğu için kullanıcı uygulamayı kapatabilir. Bunun için ön yüzde devam eden işlemlerden bağımsız olarak arka tarafta bazı işlemleri yapmamızı sağlayan yapıya “AsyncTask” denir.
Yeni bir sınıf içerisine “AsyncTask” sınıfını “extend” ederek kullanacağız. “Extend” ettikten sonra temel olarak bir metodu “override” etmemizi isteyecek ancak biz burada kullanılabilme ihtimali olan 5 temel metottan bahsedelim.
onPreExecute : İşlemler öncesi çalıştırılan metottur.
doInBackground : Burada yapılacak işlem gerçekleşir.
onProgressUpdate : “doInBackground” metodu içerisinde “publishProgress” metodu ile yapılan işlemin ilerleme durumu hakkında kullanıcıya bilgi verebiliriz.
onPostExecuted : İşlem tamamlandığı zaman bu metot çalışmaktadır.
onCancelled : Her hangi bir sebepten dolayı iptal edilirse bu metot çalışmaktadır.
Okumaya devam et Android AsyncTask Kullanımı

Unity3D Inspector Özellikleri – List Yapısı

Merhaba, bu yazımda Unity3D içerisinde “Inspector Panel” özelleştirilirken kullanmamız gerekebilen liste yapısı eklemeye bakacağız.
Öncelikle daha önceki yazılarımda bahsettiğim gibi “Inspector” için kullanılabilen bir script yapısını objenin üzerine sürükle bırak ile bırakamıyoruz. Sebebi oluşturacağımız script yapısını “Editor” sınıfından türetmiş olmamızdır. Bunun için ana dizin içerisinde “Editor” adında bir klasör oluşturalım ve içerisine “Menu.cs” adında bir C# scripti ekleyelim. Daha sonra normal scriptleri koyacağımız bir “Scripts” klasörü oluşturarak içerisine “MainScript.cs” oluşturabiliriz.
Okumaya devam et Unity3D Inspector Özellikleri – List Yapısı

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ı

Android Snackbar

Bu gün Android Material Design ile birlikte gelen “Snackbar” yapısından bahsedeceğiz. “Snackbar” yapısı ekranın en altında kullanıcıya bilgi vermek için veya kullanıcı ile etkileşime geçmek için kullanılabilir.
Gradle Ekleme
Öncelikle “app” içerisinde ki “build.gradle” dosyası içerisine gerekli olan “Android Design” kütüphanesini ekleyelim.
Okumaya devam et Android Snackbar

Android RecyclerView Yapısı – Sonsuz Eklenebilir Eleman

Merhaba, bu gün “RecyclerView” yapısının en altına gelindiği zaman yeni elemanlar ekleyerek devam etmesini sağlayacağız. Daha önce temel “RecyclerView” yapısından bahsetmiştik. Bu örnekte onun üzerine devam edeceğiz. Buradan inceleyebilirsiniz.
Liste sonuna gelecek “Progress Bar” XML yapısı
Liste içerisinde kullanacağımız XML yapısı bahsettiğim örnekte mevcut. Bunun için öncelikle alt tarafa inildiği zaman gösterilecek olan “Progressbar” için XML yapısı hazırlayalım. “list_item_progressbar.xml” olarak oluşturdum.
Okumaya devam et Android RecyclerView Yapısı – Sonsuz Eklenebilir Eleman

Android RecyclerView, Toolbar ve FloatingActionButton

Merhaba, daha önceki yazılarımda “RecyclerView” yapısını incelemiştik. Dilerseniz buradan inceleyebilirsiniz. Bu yazıda ise ek olarak “Toolbar” ve “Floating Action Button” a bakacağız.
Öncelikle “Toolbar” dan bahsedelim. “Toolbar”, “Material Design” ile gelen “ActionBar” yapısının yerine geçmiş olan yapıdır. Bunun çeşitli sebepleri bulunmakta. Görsel olarak daha iyi ve daha esnek bir yapısı bulunuyor. Ayrıca “ActionBar” ile yapılabilen her şeyi “Toolbar” ile yapabiliyoruz.
“Floating Action Button” yapısı ise, yine Android 5 ile birlikte gelen yeniliklerden bir tanesi. Çok karışık bir yapısı bulunmuyor. Aslında Android 5 altındaki sürümler içinde bu işlevi bir buton veya bir resim yerleştirerek yapmak mümkün. Burada bize kolaylık sağlamaktadır. Genellikle bir aktivite içerisinde ek bir işi yapmak için kullanılan ekranın sağ alt köşesinde bulunan butondur. Örnek olarak Twitter üzerinden yeni bir tweet atmamız için sağ alta yerleştirilmiş.
Okumaya devam et Android RecyclerView, Toolbar ve FloatingActionButton

Android RecyclerView Yapısı – Farklı Yükseklik

Merhaba, bu yazımda liste içerisindeki elemanların farklı yüksekliklerde yapılmasından bahsedeceğim. Bir önceki yazımda “RecycleView” yapısının yapımından bahsetmiştim. Bu yazı da onun üzerinden devam ederek farklılıklardan bahsedeceğim. Dilerseniz buradan inceleyebilirsiniz.
Gradle içerisi ve kullanacağımız yere ait olan XML (activity_main.xml)içeriği değişmemekte.
Okumaya devam et Android RecyclerView Yapısı – Farklı Yükseklik

Android RecyclerView Yapısı

Bu yazımda Android içerisinde liste oluşturmaktan bahsedeceğim. Android Material Design ile birlikte “ListView” yapısını bırakarak yerine “RecyclerView” yapısını getirdi. Bence, fragment ve activity içerisinde kullanımı daha kolaylaştı.
Öncelikle yapacaklarımızı kısaca yazalım.
1- Gradle dosyası içerisine yardımcı kütüphaneyi ekleyeceğiz.
2- Kullanacağımız yere ait XML yapısına “RecyclerView” eklenmesi
3- Her satır için kullanılacak XML tasarlanması
4- ArrayList ile birlikte kullanmak için bir model yapısı
5- Adapter sınıfının oluşturulması
6- Kullanacağımız sınıftan çağrılması
Okumaya devam et Android RecyclerView Yapısı

Unity3D Inspector Özellikleri – 2 Menu Yapımı

Merhaba, bir önceki yazımda kullanılabilecek temel yapılardan bahsetmiştim. Şimdi “inspector” paneli üzerinden bir menü yapacağız.
Menü yapımına geçmeden önce küçük bir şeyden bahsetmek istiyorum. Bir görsel öğe kullanmak istediğimiz zaman “public” olarak bir değişken tanımlayıp, o değişkene Unity arayüzü üzerinden görsel öğeyi sürükleyerek göstermek istediğimiz yerde gösterebiliriz. Eğer kullanacağımız görsel farklı sahnelerde değişmeden kalacak ise bunu doğru klasörlere yerleştirerek yapabiliriz.
Projemizin ana dizini içerisine “Resources” adında bir klasör oluşturarak kullanacağımız görseli içerisine atalım. C# script içerisinde bir adet “Texture2D” değişkeni tanımlayalım. Bu değişkeni “private” yapacağız. Daha sonra C# script içerisinde “Awake” fonksiyonunda “Resources” sınıfının “Load” metodu ile ilk parametre klasör içerisindeki görselin ismi, ikinci parametre ise değişkenin tipi olacak şekilde kullanalım ve “private” tanımladığımız değişkene atama yapalım.

Burada bir de “as” yapısı var. Bu dönüştürme işlemi yapmakta. Eğer dönüştürme mümkün olmazsa “null” döndürmekte.
Artık menü yapacağımıza göre “MonoBehaviour” sınıfı yerine “Editor” sınıfını “extend” ediyoruz. Tabi burada “using UnityEditor” eklemeyi unutmuyoruz. Yukarıda “Resources” klasörü oluşturmadan bahsetmiştim. “Inspector” üzerinde Editor yapılarını kullanabilmek içinde “Editor” adında bir klasör oluşturarak, scripti içerisine atmamız gerekmekte. İsmini “Menu.cs” yaptım.
Bir sınıfa “Editor” sınıfını “extend” edersek o script yapısını her hangi bir “GameObject” yapısı üzerine koyamayız. Bunun için “Editor” script yapısı ile başka bir scripti yönetmemiz gerekmekte. İlk olarak bu işlemi yapmak için Unity arayüz üst tarafına bir menü yerleştireceğiz.
Bir önceki yazımda da örneklerinden bahsettiğim gibi ek olarak “MenuItem” yapısına bakalım. Bu yapı Unity arayüzünün üst tarafına yeni bir menü eklememizi sağlamakta. Aralarına “/” koyarak yan yana açılan bir menü yapısı elde edebiliyoruz. Örneğin;

Bu yapıyı bir metot üzerine yazıyoruz. Tıklandığı zaman altına yazılmış olan metod çalışmakta. Biz buna basıldığı zaman seçili olan obje üzerine yeni oluşturacağımız “MainScript.cs” i ekleyelim. MainScript;

Şimdi, Menu.cs script içerisine alttaki kodu ekleyelim.

Buradaki kodu biraz inceleyelim. Öncelikle “Selection.activeGameObject”, hiyerarşi paneli üzerinden seçilen “gameobject” yapısını döndürmekte. Eğer böyle bir obje seçilmemiş ise ilk koşula girecek seçilir ise “else” durumuna girecek. Eğer seçildiyse ve üzerinde “MainScript” yok ise eklemek için soru soracak ve “Yes” durumunda eklenecek.
Burada kullanmış olduğumuz “DisplayDialog” yapısına da bakalım. Kullanılan 2 tür yapısı mevcut. Bir tanesi 3 farklı parametre almakta; başlık, içerik ve bir adet buton. Butona basılınca koşula girebilmekte. İkinci türü ise 4 farklı parametre almakta; başlık, içerik, buton1, buton2 olarak. Buton1 ‘e basılırsa koşula girebilmekte yani “true” dönmekte.
Şimdi “inspector” panelini kontrol edeceğimiz yapı olan “OnInspectorGUI()” metoduna bakalım. Eklediğimiz “MainScript” üzerinde “inpsector” panelinde yapıları kontrol etmemizi sağlamakta. Biz bu örneğimizde 3 tane buton koyarak butonlara tıklandığı zaman alt taraflarında yeni menüler açacağız.
Öncelikle yerleştirme işlemi için “EditorGUILayout.BeginHorizontal()” ile yatay olarak “layout” oluşturabiliriz. Bitirmek içinde “EditorGUILayout.EndHorizontal()” yazmamız gerekmekte. Şimdi bunların içerisine buton eklemek için “GUILayout.Button()” yapısını kullanacağız. Tıklandığı zaman “true” döndürmekte. Buraya kadar olan script yapısı aşağıda.

Artık elimizde tıklandığını bildiğimiz “boolean” değişkenler bulunmakta. Bu değişkenlere göre işlemler yapabiliriz. Yorum satırının hemen altından devam edelim,

Burada 2 yeni yapı kullandık. Birincisi “HelpBox”, 2 parametre almakta. İlk parametresi yazacak olan değer, ikinci parametresi ise sol tarafında görünecek olan işaret. İkinci olarak “Space”, koyulduğu yere boşluk bırakmakta.
Son olarak o kadar “MainScript” oluşturduk içerisinde ki değişkene bu panel üzerinden müdahale etmezsek olmaz :). “MainScript” içerisine bir tane “bool” değişken tanımlıyoruz ve “public” olmalı.

Şimdi, bu değişkenlere erişirken “serializedObject” yapısını kullanacağız. 2 temel metodu üzerinde yoğunlaşacağız. “OnInspectorGUI” metodu içerisine en başına “serializedObject.Update()” ve en sonuna da “serializedObject.ApplyModifiedProperties()” ekliyoruz.
Menu1 yapısının içerisine “PropertyField” ekleyelim. Biz iki parametreli olan yapısını kullanalım. Birinci parametre olarak “serializedObject.FindProperty()” ile diğer script içerisinde tanımladığımız “valueBool” değişkeninin özellikleri alalım. İkinci parametre olarak onun sol tarafında yazacak olan açıklamayı girelim.
EditorGUILayout.PropertyField(serializedObject.FindProperty(“valueBool”), new GUIContent(“Boolean Value”));

Örnek olması açısından bir tane tam sayı ve bir tane “string” değer tanımlayalım.
MainScript

Menu

Birazda ekran görüntüsü
image-9-1

image-9-2
Teşekkürler, görüşmek üzere.