Merhaba Unity geliştiricileri! Bu yazıda, Unity oyunlarınızda oyun verilerini kalıcı olarak saklamanın en basit ve yaygın yöntemlerinden biri olan PlayerPrefs sistemini detaylı bir şekilde inceleyeceğiz. PlayerPrefs, küçük ölçekli oyunlar için ideal olan yerleşik bir veri saklama sistemidir. Oyuncunun skorunu, oyun içi ayarlarını veya diğer küçük verileri kaydetmek için kullanabilirsiniz.
PlayerPrefs Nedir?
PlayerPrefs, Unity’nin yerleşik olarak sağladığı bir sistemdir ve oyun verilerini oyuncunun cihazında (bilgisayar, mobil cihaz vb.) küçük dosyalar halinde saklar. Bu veriler, oyun yeniden başlatılsa bile korunur. Örneğin, oyuncunun en yüksek skorunu kaydetmek, ses seviyesini saklamak veya oyun içi satın alımları takip etmek için PlayerPrefs’i kullanabilirsiniz. Ancak, büyük miktarda veri saklamak için uygun değildir ve güvenlik açısından hassas veriler için kullanılmamalıdır.
PlayerPrefs’in Avantajları
- Kullanımı kolay: PlayerPrefs API’si basit ve anlaşılırdır. Az kodla veri kaydı ve okuma işlemleri yapılabilir.
- Yerleşik: Ek bir eklenti veya kütüphane gerektirmez.
- Çok platformlu: Windows, macOS, iOS, Android gibi farklı platformlarda sorunsuz çalışır.
PlayerPrefs’in Dezavantajları
- Güvenlik: PlayerPrefs verileri, oyuncunun cihazında açıkça saklanır ve kolayca değiştirilebilir. Hassas veriler için uygun değildir.
- Sınırlı kapasite: Büyük miktarda veri saklamak için uygun değildir. Veri miktarı platformlara bağlı olarak sınırlıdır.
- Veri tipi kısıtlaması: Sadece string, integer, float ve boolean veri tiplerini destekler. Karmaşık veri yapıları için uygun değildir.
PlayerPrefs Kullanımı: Adım Adım
Veri Kaydetme
Veri kaydetmek için PlayerPrefs.SetInt(), PlayerPrefs.SetFloat(), PlayerPrefs.SetString() ve PlayerPrefs.SetBool() fonksiyonlarını kullanırız. İlk parametre anahtar (key), ikinci parametre ise değerdir. Anahtarlar, verileri tanımlamak için kullanılan string değerlerdir. Aynı anahtarla birden fazla veri kaydedersek, son kaydedilen veri geçerli olur.
// Oyuncu skorunu kaydetme
int playerScore = 100;
PlayerPrefs.SetInt("HighScore", playerScore);
// Oyun sesi seviyesini kaydetme
float soundVolume = 0.5f;
PlayerPrefs.SetFloat("SoundVolume", soundVolume);
// Oyuncunun adını kaydetme
string playerName = "John Doe";
PlayerPrefs.SetString("PlayerName", playerName);
// Oyunun sesini kapatma durumunu kaydetme
isMuted = true;
PlayerPrefs.SetBool("IsMuted", isMuted);
Veri Okuma
Kaydedilen verileri okumak için PlayerPrefs.GetInt(), PlayerPrefs.GetFloat(), PlayerPrefs.GetString() ve PlayerPrefs.GetBool() fonksiyonlarını kullanırız. İlk parametre anahtar (key), ikinci parametre ise varsayılan değerdir (anahtar bulunmazsa bu değer döndürülür).
// Oyuncu skorunu okuma
int highScore = PlayerPrefs.GetInt("HighScore", 0);
// Oyun sesi seviyesini okuma
float soundVolume = PlayerPrefs.GetFloat("SoundVolume", 1.0f);
// Oyuncunun adını okuma
string playerName = PlayerPrefs.GetString("PlayerName", "Guest");
// Oyunun sesini kapatma durumunu okuma
boolean isMuted = PlayerPrefs.GetBool("IsMuted", false);
Değişiklikleri Kaydetme
PlayerPrefs verilerini kaydetmek için PlayerPrefs.Save() fonksiyonunu çağırmanız gerekir. Bu fonksiyonu her veri kaydı işleminden sonra çağırmanız önerilir.
PlayerPrefs.Save();
Veri Silme
Belirli bir veriyi silmek için PlayerPrefs.DeleteKey() fonksiyonunu, tüm verileri silmek için ise PlayerPrefs.DeleteAll() fonksiyonunu kullanabilirsiniz.
// Belirli bir veriyi silme
PlayerPrefs.DeleteKey("HighScore");
// Tüm verileri silme
PlayerPrefs.DeleteAll();
Örnek Senaryo: En Yüksek Skoru Kaydetme
Oyuncunun en yüksek skorunu kaydeden basit bir örnek:
using UnityEngine;
public class ScoreManager : MonoBehaviour
{
public int currentScore;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
currentScore += 10;
SaveHighScore();
}
}
void SaveHighScore()
{
int highScore = PlayerPrefs.GetInt("HighScore", 0);
if (currentScore > highScore)
{
PlayerPrefs.SetInt("HighScore", currentScore);
PlayerPrefs.Save();
}
}
}
Bu örnekte, boşluk tuşuna basıldığında oyuncu skoruna 10 ekleniyor ve SaveHighScore() fonksiyonu çağrılıyor. Bu fonksiyon, mevcut skoru kaydedilmiş en yüksek skor ile karşılaştırıyor ve daha yüksekse yeni skoru kaydediyor.
Sonuç
PlayerPrefs, küçük ölçekli oyunlarda veri saklamak için basit ve kullanışlı bir yöntemdir. Ancak, güvenlik ve kapasite sınırlamalarını göz önünde bulundurmanız önemlidir. Büyük ölçekli oyunlar veya hassas veriler için daha gelişmiş veri saklama yöntemlerini (örneğin, dosya sistemi veya veritabanı) kullanmanız gerekebilir. [YOUTUBE_VIDEO_BURAYA]




