20 Mart 2016 Pazar

Nasıl sahneler arası geçişler için müzik ayarları yapabilirim.


PlayerPrefs



Bu dersimizde sahneler arası geçiş yaptığımız zaman müziği açıp kapama işlemlerini kaydetmeyi anlatacağım.Bu proje ağırlıkla PlayerPrefs kullanımı ile alakalıdır.
      PlayerPrefs,Unity Engine oyun motoru için kullanılan kalıcı verileri kaydetmemizi sağlayan bir sınıftır.Veriler kastım ise şunlardır coin,score,ses ayarları,modifiye işlemleri ve bir çok işlemi kaydetmemizi sağlıyan verilerdir.
      Bu proje iki Sahne,2 c# script ve bir mp3 dosyası ve bir AudioSource Componenti kullanılarak hazırlanmıştır.








Bu c# script sesi ayarlayıp bir değere atadığımız scripttir.


using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;//Sahneler arası geçiş için bu kütüphane eklenmesi lazım.


public class SesiAyarla : MonoBehaviour {


    void Update () {

        if(Input.GetKeyDown(KeyCode.C))//Burada C tuşuna basıldıysa
            PlayerPrefs.SetInt ("ses",1);//Eğer yukardaki şart sağlandıysa ses adındaki kayıtı değeri 1 yap
        

        if(Input.GetKeyDown(KeyCode.K))//Burada K tuşuna basıldıysa
            PlayerPrefs.SetInt ("ses",2);//Eğer yukardaki şart sağlandıysa ses adındaki kayıtı değeri 2 yap
        

        if(Input.GetKeyDown(KeyCode.F2))//Burada ise F2 tuşuna basıldıysa.
            SceneManager.LoadScene ("SesiCal");//SesiCal adındaki sahneye aktar.

    }
}





Bu c# script sesi açılıp açılmayacağına kara veren scripttir.


using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement; //Sahneler arası geçiş için bu kütüphane eklenmesi lazım.

public class SesiCal : MonoBehaviour {

    AudioSource au; //AudiSource Componentini Çağırıyoruz.

    int Audio; //Audio adında bir tam sayı değişken tanımladım.

    void Start () {
        au = GetComponent<AudioSource>(); //Audio Componentinin nesnesini oluşturdum.
        Audio = PlayerPrefs.GetInt ("ses");//Ses adındaki bir kayıta Auido değişkenini atadım.

        if(Audio == 1)// kara yapısında Audio == 1 ise au değişkeninin mutesini true yap.
            au.mute = true;//True sesin acik olduğu anlamına geliyor.
        

        else if(Audio == 2)// kara yapısında Audio == 1 ise au değişkeninin mutesini true yap.
            au.mute = false;//False sesin kapalı olduğu anlamına geliyor.
        
    }
    void Update(){
        
        if(Input.GetKeyDown(KeyCode.F1))//Burada ise F1 tuşuna basıldıysa.
            SceneManager.LoadScene ("SesiAyarla");//SesiAyarla adındaki sahneye aktar
        
    }
}




Önemli:Bu iki script ayrı sahnelerde ve  sesCal isimli olan script bulduğu konuma AudioSource eklenmeli ve bir mp3 dosyasi atanmalıdır.

Veriler Nerde Saklanır ?

  • Windows :  Registry -> HKCU\Software\[kuruluş_adı]\[ürün_adı]
  • Windows WebPlayer :  %APPDATA%\Unity\WebPlayerPrefs\ [kuruluş_adı]\[ürün_adı]
  • Mac OS X : ~/Library/Preferences/ unity.[company name].[product name].plist
  • Mac OS X WebPlayer : ~/Library/Preferences/Unity/WebPlayerPrefs/ unity.[kuruluş_adı]\[ürün_adı].plist
    Not: Her oyun için ayrı kayıt tutulur.WebPlayer için kayıt limiti 1 mb'dir.

Buradar dosyanın hazır halini indirebilirsiniz

https://www.dropbox.com/s/1eg6fqb6fiw360r/sesAcKapa.unitypackage?dl=0

Gani BASABAK

Hiç yorum yok:

Yorum Gönder