Ayarları Kaydetme
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 25 / 60.
Bir ayar bir kez seçilir ve sonrasında her oyunda geri gelmesi beklenir; bu yüzden PlayerPrefs içinde tutulmalıdır. Oyun başladığında ayarı yükleyin, Ayarlar ekranında görünmesi için kontrolüne aktarın ve oyuna uygulayın. Oyuncu kontrolü değiştirdiğinde yeni değeri uygulayın ve kaydedin. Bu açma-kapama düğmesi (using UnityEngine.UI;) ekrandaki zamanlayıcıyı gösterir veya gizler. PlayerPrefs bool değer saklayamadığı için açıkken 1, kapalıyken 0 saklar:
public Toggle timerToggle;
public GameObject timerText;
void Start()
{
bool show = PlayerPrefs.GetInt("ShowTimer", 1) == 1;
timerToggle.isOn = show;
timerText.SetActive(show);
timerToggle.onValueChanged.AddListener(OnTimerToggled);
}
void OnTimerToggled(bool on)
{
timerText.SetActive(on);
PlayerPrefs.SetInt("ShowTimer", on ? 1 : 0);
PlayerPrefs.Save();
}onValueChanged, kontrolün yeni değerini dinleyiciye aktarır: Toggle için bir bool, Slider içinse bir float; Slider'ın konumu slider.value değeridir. Koddan isOn veya value ayarlamak, kontrolü oyuncunun yaptığı gibi değiştirir; dolayısıyla değer değiştiğinde dinleyiciler de çağrılır. Bu nedenle dinleyici yüklemeden sonra eklenir: önce eklenirse her başlangıçta çalışır ve yüklenen değeri doğrudan geri kaydeder. SetIsOnWithoutNotify ve SetValueWithoutNotify, hiçbir dinleyiciyi çağırmadan kontrolü ayarlar.
Varsayılan değer, yeni bir oyuncunun ne alacağını belirler. GetInt("ShowTimer", 1), oyuncu kapatana kadar zamanlayıcıyı gösterir; varsayılan değer 0 olsaydı ayarları hiç açmamış herkesten gizlerdi. Bir float ayarı da aynı şekilde yüklenir: PlayerPrefs.GetFloat(key, defaultValue). GetFloat("MouseSensitivity", 1.5f), yeni bir oyuncuya 1.5 değerini verir. Ses düzeyi ayarı AudioListener.volume değerine atanır. Bu, Unity'nin 0 (sessiz) ile 1 (tam ses) arasındaki ana ses düzeyidir ve oyundaki tüm sesleri ölçeklendirir.
Görev
OrtaSes düzeyi kaydırıcısını Volume anahtarı altında kaydedilen bir ayar hâline getir.
Start()içindePlayerPrefs.GetFloat("Volume", 0.8f)ile yükle,slider.valueveAudioListener.volumedeğerlerine ata veShowVolumeişlevini çağır.- Ardından
slider.onValueChanged.AddListener(OnVolumeChanged);ekle. OnVolumeChangediçindevaluedeğeriniAudioListener.volumedeğerine ata, göster vePlayerPrefs.SetFloatilePlayerPrefs.Save()kullanarak kaydet.
“Oyna” düğmesine basıp kaydırıcıyı hareket ettir, ardından Durdur ve “Oyna” düğmelerine bas: kaydırıcı bıraktığın yerde kalır. Sonra “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class VolumeSetting : MonoBehaviour
{
public Slider slider;
public TMP_Text volumeText;
void Start()
{
// Kaydedilmiş ses düzeyini yükle, uygula ve göster; ardından slider değişikliklerini dinle
}
void OnVolumeChanged(float value)
{
// Yeni ses düzeyini uygula, göster ve kaydet
}
void ShowVolume(float volume)
{
volumeText.text = "Volume: " + Mathf.RoundToInt(volume * 100) + "%";
}
}
Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki ParalarKendi başına pratik yap: Unity playground