Unity Dil Ayarlarını Tüm Sahnelere Uygulamak

Katılım
24 Ağustos 2017
Mesajlar
2.832
Makaleler
1
Çözümler
16
Yeniden merhaba. Oyunum için menüye İngilizce dil eklemiştim. Ancak sadece menü için geçerli. Ben durdurma paneline, ölüm paneline de dil eklemek istiyorum. (yani diğer sahnelere de) @Predator Titan bir önceki dil konusunda yine bu soruyu sordum fakat son mesajla birleştiği için bildirim gelmedi sanırım.

Kodların son halleri;
dilAktif.cs
dil.cs
 
Çözüm
DİL.CS İÇİN >

Kod:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class dil : MonoBehaviour
{

    public int Menüdeger = 0;
    public int Durdurmadeger = 0;
    public int Olmedeger = 0;

    public bool ingilizce;
    public bool türkce;

    public bool durduma_ingilizce;
    public bool durdurma_türkce;

    public bool ölme_ingilizce;
    public bool ölme_türkce;


 
    void Start()
    {
        //Oyunu, oyun motorunu(unity i yani) kapatsanız dâhi yaptığınız, seçtiğiniz son değişiklikleri kaydeden kod aşağıdadır.
        Menüdeger = PlayerPrefs.GetInt("Mdeger");
        Durdurmadeger = PlayerPrefs.GetInt("Ddeger");
        Olmedeger = PlayerPrefs.GetInt("Odeger");
    }
    void Update()
    {
        if (Menüdeger == 1)
        {
          
            ingilizce = true;
            türkce = false;
        }
        if (Menüdeger == 2)
        {
      
            türkce = true;
            ingilizce = false;
        }


        if (Durdurmadeger == 1)
        {
      
            durduma_ingilizce = true;
            durdurma_türkce = false;
        }
        if (Durdurmadeger == 2)
        {
            
            durdurma_türkce = true;
            durduma_ingilizce = false;
        }


        if (Olmedeger == 1)
        {
            
            ölme_ingilizce = true;
            ölme_türkce = false;
        }
        if (Olmedeger == 2)
        {
        
            ölme_türkce = true;
            ölme_ingilizce = false;
        }
      
    }

    public void IngilizceButton()
    {
        Menüdeger = 1;
        PlayerPrefs.SetInt("Mdeger", Menüdeger);
    }
    public void TurkceButton()
    {
        Menüdeger = 2;
        PlayerPrefs.SetInt("Mdeger", Menüdeger);
    }

    //Durdurma sahnesi için bu aşağı da ki komutu, stop/durdurma tuşuna tanımlayın aynı yukarı da menü ye yaptığınız gibi.
    public void DurdurmaIngilizceButton()
    {
        Durdurmadeger = 1;
        PlayerPrefs.SetInt("Ddeger", Durdurmadeger);
    }
    public void DurdurmaTurkceButton()
    {
        Durdurmadeger = 2;
        PlayerPrefs.SetInt("Ddeger", Durdurmadeger);
    }


    //Ölme sahnesi için bu aşağı da ki komutu, ölme/yeniden doğma sanhesi tuşuna tanımlayın aynı yukarı da menü ye yaptığınız gibi.
    public void OlmeIngilizceButton()
    {
        Olmedeger = 1;
        PlayerPrefs.SetInt("Odeger", Olmedeger);
    }
    public void OlmeTurkceButton()
    {
        Olmedeger = 2;
        PlayerPrefs.SetInt("Odeger", Olmedeger);
    }


}

dilAktif.cs İÇİN >
Kod:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class dilAktif : MonoBehaviour {

    dil DenemeS;

    public GameObject DenemeCsObj;

    //Ana menü için
    public Text bolumSecText;
    public Text hikayeModText;
    public Text ozellistirmeText;
    public Text nasilOynanirText;
    public Text cıkText;

    public Text nasilText1;
    public Text nasilKontrollerText;
    public Text nasilDusmanlarTExt;

    void Start()
    {

        DenemeS = DenemeCsObj.GetComponent<dil>();

    }

    void Update()
    {
        if (DenemeS.ingilizce == true)
        {
            //Menü için
            bolumSecText.text = "Level Select";
            ozellistirmeText.text = "Customize (Coming Very Soon)";
            hikayeModText.text = "Story Mode (Coming Very Soon)";
            nasilOynanirText.text = "How To Play";
            cıkText.text = "Quit";
            //Nasıl için
            nasilText1.text = "How to play? You are welcome to play a game that adds a dimension to maze games. In this game, there are chapters in many places from the biggest cities to the Moon, from the Moon to the depths of the ocean.In these chapters, your aim is to hit the obstacles. How will you do that? Then lets come check it out.";
            nasilKontrollerText.text = "Controls; To control your character, you need to use the analog bar on the bottom left and the jump button on the bottom right.";
        }

        if (DenemeS.türkce == true)
        {
            //Menü için
            bolumSecText.text = "Bölüm Seç";
            ozellistirmeText.text = "Özelleştirme (Çok Yakında)";
            hikayeModText.text = "Hikaye Modu (Çok Yakında)";
            nasilOynanirText.text = "Nasıl Oynanır";
            cıkText.text = "Çık";
            //Nasıl için
            nasilText1.text = "Nasıl Oynanır? Labirent oyunlarına ayrı bir boyut katan oyunumuza hoşgeldiniz. Bu oyunda, en büyük şehirlerden, Aya, Aydan okyanusların derinliklerine kadar bir çok yerde geçen bölümler bulunmakta. Bu bölümlerde amacınız engellere çarpmayıp çıkışa ulaşmak.Bunu nasıl mı yapacaksınız? O zaman gelelim kontrollere.";
            nasilKontrollerText.text = "Kontroller; Karakterinizi kontrol etmek için sol alt taraftaki analog çubuğu ve sağ alt taraftaki zıplama butonunu kullanmanız gerekmekte.";
        }

        //DURDURMA EKRANI İÇİN AYARLAR-------------------------------------------------------
        if (DenemeS.durduma_ingilizce == true)
        {
         // BURAYA GİRİLECEK TEXT LERİ SİZİN AYARLAMANIZ LAZIM, NORMAL YUKARIDAN TEXT İLE DURDURMA EKRANINDA Kİ TEXTLERİ TANIMLAYIN   
        }

        if (DenemeS.durdurma_türkce == true)
        {
          // BURAYA GİRİLECEK TEXT LERİ SİZİN AYARLAMANIZ LAZIM, NORMAL YUKARIDAN TEXT İLE DURDURMA EKRANINDA Kİ TEXTLERİ TANIMLAYIN
        }


        //ÖLME/DEATH/YENİDEN BAŞLAMA EKRANI İÇİN AYARLAR-------------------------------------------------------
        if (DenemeS.ölme_ingilizce == true)
        {
            // BURAYA GİRİLECEK TEXT LERİ SİZİN AYARLAMANIZ LAZIM, NORMAL YUKARIDAN TEXT İLE ÖLME EKRANINDA Kİ TEXTLERİ TANIMLAYIN   
        }

        if (DenemeS.ölme_türkce == true)
        {
            // BURAYA GİRİLECEK TEXT LERİ SİZİN AYARLAMANIZ LAZIM, NORMAL YUKARIDAN TEXT İLE ÖLME EKRANINDA Kİ TEXTLERİ TANIMLAYIN
        }

    }

}

Paylaştığım kodları direk siz başta belirtiğim script adına göre Ctrl+c - Ctrl+V yaparak işlemi halledin. Siz eski kodunuzun içinde ki bütün her şeyi silin ve direk yapıştırın yani.

Sorun çıkarsa mümkün ise Ekran görüntüsü dahilinde + devrik cümle kurmadan açıklarsanız sevinirim

Oyunda şu an 13 sahne var sanırım. 11 tane level, 1 menu, 1 tane de level seçim sahnesi. Eğer siz de kabul ederseniz ben size prejenin dosyalarını hemen başka bir şey denemeden atayım? (Sadece projenin dosya konumundaki dosyaları atmam yeterlidir değil mi?)
 
13 scene ? Bakalım dostum o kadar yaptın mı, sanırım ikimiz farklı şeylerden bahsediyoruz. Benim için bir sorun yok gönderebilirsiniz.

Oyunun Dosyasını gönderin; unity'i açın Projenizi açmayın, projenizin adının altında Path:"projenizin klasör uzantısı" yazan yere gidin hedef yerden projeyi, dosyayı yani seçin ve onu zip. / rar. yolu ile sıkıştırıp Google drive a yükleyin. Linki paylaş seçeneği ile linki yukarı da verdiğim e mail'ime gönderin, benden başka kimse projenize ulaşamasın, indirmesin diye.
 
Hemen atıyorum mail adresinize. Bu arada cidden 13 sahne var


Size dosyaları atacağım mail adresimde, bazen sorun oluyor, verilen cevaplar gözükmüyor. Yani eğer dosya falan atacaksanız, önceden buraya yazarsanız sevinirim

Edit: Dosya boyutu 3 GB. Upload için 20 saat gösteriyor Neyse göndereceğim er ya da geç. Umarım...
 
Ben bekliyorum dostum, ben zaten sonucu burada paylaşacağım, adım adım yazacağım yapmanız gerekenleri; ne yol izlemeniz gerektiğini söyleyeceğim. Ki diğer insanların da işine yarasın. Ne zaman yüklersen o zaman cevap yaz çünkü şimdi yazarsan yüklediğin zaman tekrar mesaj atarsan edit olarak kalacak ve bildirim gelmeyecek.
 
2 gündür deniyorum ancak Google Drive, Upload işlemini bir süre sonra kendi kendine bitiriyor. Yandex Disk'imde de yer kalmadı. Başka bir yolu var mı? Olmazsa Yandex Disk'i boşaltıp, Upload işlemini Yandex Disk'te başlatıp, gece bilgisayarı açık bırakırım.
 
3-4 saate kalmadan geri dönüş yapacağım
@yigidyum Download+RAR'ı unpack yapma+Oyun Motoruna Import etme işlemleri derken daha yeni kontrol edebiliyorum, bekleyecekseniz 1-2 saate geri dönüş yapacağım.
 
Son düzenleme:
DilAktif.CS için>
Kod:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class dilAktif : MonoBehaviour
{

    dil DenemeS;

    public GameObject DenemeCsObj;

    //Ana menü için
    public Text bolumSecText;
    public Text hikayeModText;
    public Text ozellistirmeText;
    public Text nasilOynanirText;
    public Text cıkText;

    public Text nasilText1;
    public Text nasilKontrollerText;
    public Text nasilDusmanlarText;

    public Text devamText;


    //LEVEL 2 YAZILARI---- DİĞER LEVEL'LERİ DE AYNEN BU ŞEKİLDE TANITMALISINIZ.
    public Text JumpButton;
    public Text DurdurButton;
    public Text geri_Text;
    public Text menu_Text;
    public Text yeniden_Text;
    public Text Cik_Text;
    public Text Durduruldu_Text;
    public Text Tekrar_Button_Text;
    void Start()
    {

        DenemeS = DenemeCsObj.GetComponent<dil>();

    }

    void Update()
    {
        if (DenemeS.ingilizce == true)
        {
            if(Application.loadedLevelName=="Menu")
            {
                //Menü için
                bolumSecText.text = "Level Select";
                ozellistirmeText.text = "Customize (Coming Very Soon)";
                hikayeModText.text = "Story Mode (Coming Very Soon)";
                nasilOynanirText.text = "How To Play";
                cıkText.text = "Quit";
                //Nasıl için
                nasilText1.text = "How to play? You are welcome to play a game that adds a dimension to maze games. In this game, there are chapters in many places from the biggest cities to the Moon, from the Moon to the depths of the ocean.In these chapters, your aim is to hit the obstacles. How will you do that? Then lets come check it out.";
                nasilKontrollerText.text = "Controls; To control your character, you need to use the analog bar on the bottom left and the jump button on the bottom right.";
            }

            if (Application.loadedLevelName == "Level2")
            {
                //LEVEL 2 YAZILARI---DİĞER LEVEL'LERİ DE AYNEN BU ŞEKİLDE TANITMALISINIZ.
                JumpButton.text = "JUMP";
                DurdurButton.text = "STOP";
                geri_Text.text = "BACK";
                menu_Text.text = "MENU";
                yeniden_Text.text = "RESTART";
                Cik_Text.text = "EXIT";
                Durduruldu_Text.text = "STOP";
                Tekrar_Button_Text.text = "RESTART";
            }
        }

        if (DenemeS.türkce == true)
        {
            if (Application.loadedLevelName == "Menu")//BEN SADECE SİZE LEVEL2 VE MENU SAHNELERİ İÇİN DÜZENLEME YAPTIM. BU KODU SİZ BÜYÜTECEKSİNİZ, ÇOK UZUN SÜRECEĞİ İÇİN BUNU SİZ YAPABİLİRSİNİZ :) DİĞER SAHNELERE DE AYNI BU YAPTIKLARIMIN BİREBİRİNİ YAPARSANIZ SOUN OLMAYACAKTIR.
            { //Menü için
                bolumSecText.text = "Bölüm Seç";
                ozellistirmeText.text = "Özelleştirme (Çok Yakında)";
                hikayeModText.text = "Hikaye Modu (Çok Yakında)";
                nasilOynanirText.text = "Nasıl Oynanır";
                cıkText.text = "Çık";
                //Nasıl için
                nasilText1.text = "Nasıl Oynanır? Labirent oyunlarına ayrı bir boyut katan oyunumuza hoşgeldiniz. Bu oyunda, en büyük şehirlerden, Aya, Aydan okyanusların derinliklerine kadar bir çok yerde geçen bölümler bulunmakta. Bu bölümlerde amacınız engellere çarpmayıp çıkışa ulaşmak.Bunu nasıl mı yapacaksınız? O zaman gelelim kontrollere.";
                nasilKontrollerText.text = "Kontroller; Karakterinizi kontrol etmek için sol alt taraftaki analog çubuğu ve sağ alt taraftaki zıplama butonunu kullanmanız gerekmekte.";
                //HANGİ LEVELDE İSENİZ HANGİ TEXT OBJELERİ VARSA, ONLARI AYRI AYRI YERLERDE DEĞİL BURADA SADECE TEK BİR METODUN ALTINDA TOPLAYIP DEĞİŞTİRECEĞİZ ARTIK. ESKİSİ GİBİ 3 AYRI YERDEN DEĞİL, TEK BİR YERDEN. İNGİLİZCE OLMASI GEREKENLERİ BURAYA, TÜRKÇE OLMASI GEREKENLERİ İSE YUKARI DA Kİ TURKCE YAZAN YERE YAZIN.
            }

            if (Application.loadedLevelName == "Level2")
            {
                //LEVEL 2 YAZILARI---DİĞER LEVEL'LERİ DE AYNEN BU ŞEKİLDE TANITMALISINIZ.
                JumpButton.text = "ZIPLA";
                DurdurButton.text = "DURDUR";
                geri_Text.text = "GERİ";
                menu_Text.text = "MENU";
                yeniden_Text.text = "YENİDEN";
                Cik_Text.text = "ÇIKIŞ";
                Durduruldu_Text.text = "DURDUR";
                Tekrar_Button_Text.text = "TEKRAR ";
            }
        }

    }

}


dil.CS için>
Kod:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class dil : MonoBehaviour
{

    public int deger = 0;

    public bool ingilizce;
    public bool türkce;




    void Start()
    {       
        deger = PlayerPrefs.GetInt("Deger");
        
    }
    void Update()
    {
        if (deger == 1)
        {

            ingilizce = true;
            türkce = false;
        }
        if (deger == 2)
        {

            türkce = true;
            ingilizce = false;
        }


    }

    public void degerIngilizceButton()
    {
        deger = 1;
        PlayerPrefs.SetInt("Deger", deger);
    }
    public void degerTurkceButton()
    {
        deger = 2;
        PlayerPrefs.SetInt("Deger", deger);
    }
}

Gereksiz kodları sildim, en son mantıklı olan işlem olarak bu ortaya çıktı. Projenin yapılmış(hepsi değil sadece Level2 halini yaptım. Diğer level'ları siz tanımlayın ve aynısını yapın) halini Rar'layıp size atacağım mail üzerinden, buradan kodları da paylaşıyorum Misafir olarak gelen arkadaşların işine yarasın en azından mantığını kavrasınlar diye.

Dil.cs de yapacağınız hiç bir şey yok. Siz sadece DilAktif.cs de Level2 için yaptığım tanımlamaların aynısnı diğer levellerin içinde DilAktif.cs üzerine yazarak yapın. Yani Level3 de ne kadar Text varsa aynı Level2 de yaptığım gibi Level3 Textlerinin hepsini DikAktif.cs koduna yazın ve tanıtın. Daha sonra ingilizce ve türkce boollarının altına gidip Sahne ismini sorgulayıp ona göre de yazılanları türkçe ya da ingilizce yapın. Zaten Level2 i incelerseniz mantığı anlarsınız.

Siz bu kodu alıp eski proje üzerine yazmayın çok eksik ve hatalı olur. Size göndereceğim projenin son halini siz güncelleyin ve aktif edin.
 

Bu konuyu görüntüleyen kullanıcılar

Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…