Unity Level Manager Nasıl Oluşturulur?

Yiğit Öztoprak

Hectopat
Katılım
24 Ağustos 2017
Mesajlar
1.746
Çözümler
3
Yer
Milkway
Arkadaşlar merhaba. Unity'de labirent oyunu yapıyorum. Ve har çıkışa para koyup, karakter ona değdiğinde sonraki bölümün kilidi açılsın istiyorum. Şu anda bölümlere kilit koyamıyorum, ancak seçerek girilebiliyor. Ve alttaki resimdeki paraya değince sonraki bölüm açılsın istiyorum.
ldkasjf.PNG
Şu anda elimde bulunan kodlar bunlar bölüm seçimi için;
LevelControlScript.cs
LevelNumberScript.cs
MainManuControlScript.cs

Bu arada Main Menu kodun'da nereyi düzeltirsem Level Button ekleme hakkım artar? Şu anda 2 tane de. ( Bu kodu bir yerden bulmuştum)
kfsaş.PNG


@Predator Titan
 
Çözüm
Yanlış anlamanı istemezdim dostum, elbette yardımcı olacağım sadece sana öneri de bulunmak istedim. Sana adım adım ne yapacağını yazıyorum belki kafan karıştı ondan anlamadın.
1-Labirentin sonun da ki o para benzeri objene "kontrol" adın da bir script oluştur ve sürükleyip at.
2-kontrol kodunun içerisine ise;
Kod:
   LevelControlScript LSC;
   //LevelControlScript Hangi objenin içine atılmış ise, yani LevelControlScript nerede ise objeyi sürükleyip Paranin içine atın.
   public GameObject Para;
   void Start() {
   LSC= Para.GetComponent<LevelControlScript>();
   }
    void OnTriggerEnter(Collider c)
    {
        if (c.transform.root.tag == "Player")
        {
            LSC.youWin();
        }
    }
Bu kodu yaz ve kaydet.
3-Para yazan yere, LevelControlScript'in vardıya hani ilk yazdığın, konu başın da ki mesajın da gösterdiğin 3 tane script, işte onlardan biri olan LevelControlScript'in artık hangi objede ise o objeyi sürükleyip, Para kısmın da ki boş yere bırak.
4-Son bir sorum var, sen konunun en başında gösterdiğin şu 3 script'i kullanıyormusun ? Onları kullnamıyorsan hata verecek elbette, ama eğer LevelControlScript'i ve diğerlerini bir objeye attıysan, ayarlarını yaptıysan LevelControlScript'in atılı olduğu objeyi, labirentin sonun da ki yani kontrol kodunu attığın objende ki sağ tarafda bulunan inspector kısımından ki Para yerine sürükle.
5-Ayrıca karakterin, yani oyunun ana karakteri, senin kontrol ettiğin obje/oyuncu/karakter artık her ne ise onun adını sağ tarafında ki inspector kısmından Tag kısmına gelip orada ki Tag butonuna basıp listeden Player'i seç ve karakterin Tag'ini Player yap.
KS
KS
Yiğit Öztoprak

Yiğit Öztoprak

Hectopat
Katılım
24 Ağustos 2017
Mesajlar
1.746
Çözümler
3
Yer
Milkway
Kod:
   LevelControlScript LSC;
   //LevelControlScript Hangi objenin içine atılmış ise, yani LevelControlScript nerede ise objeyi sürükleyip Paranin içine atın.
   public GameObject Para;
   void Start() {
   LSC= Para.GetComponent<LevelControlScript>();
   }
    void OnTriggerEnter(Collider c)
    {
        if (c.transform.root.tag == "Player")
        {
            LevelControlScript.youWin();
        }
    }
}
Dostum, bak; dili bilmeden konuşmaya çalışıyorsun. Olmaz, sana önerdiğim o AçıkAkademi kaynağında bulunan C# derslerini bitir, Unity Dersler,ne geç Bu şekilde ezber ile olmaz. Temel mantığını kavraman lazım. İlk olarak dili öğren olur mu ?
Tamam öğrenmeye çalışıyorum zaten, ama şu an çok basit bir şey yapmak istiyorum. Bunu bari çok görmeyin ki öğreneyim değil mi? Sadece video izleyerek ya da okuyarak olmuyor, uygulamak da lazım :) Neyse bari verdiği son hataları da söyleyeyim, isterseniz yardımcı olursunuz.
tane.PNG

Bir tane obje oluşturdum içine de Level Control Script'i atıım.



sadfjasşdf.PNG

Daha sonra o objeye Manager ismini verip paranın içine attım. Yani anladığım buydu.

Ama yine aynı hatayı veriyor, + olarak şu da var;


aşdsflkjas.PNG


Ben de artık beklemekten sıkıldım. Bir oyun da yapıp tamamladım bu arada. (Stack benzeri) Bir de şu level açma olaylarını vb çözmek istedim, labirent oyunu yapayım dedim. Onu da beceremedim. Neyse sağlık olsun diyelim. Anlaşılan sorunu çözemeyeceğim.
 

Predator Titan

Kilopat
Katılım
13 Ekim 2015
Mesajlar
1.382
Makaleler
11
Çözümler
12
Yanlış anlamanı istemezdim dostum, elbette yardımcı olacağım sadece sana öneri de bulunmak istedim. Sana adım adım ne yapacağını yazıyorum belki kafan karıştı ondan anlamadın.
1-Labirentin sonun da ki o para benzeri objene "kontrol" adın da bir script oluştur ve sürükleyip at.
2-kontrol kodunun içerisine ise;
Kod:
   LevelControlScript LSC;
   //LevelControlScript Hangi objenin içine atılmış ise, yani LevelControlScript nerede ise objeyi sürükleyip Paranin içine atın.
   public GameObject Para;
   void Start() {
   LSC= Para.GetComponent<LevelControlScript>();
   }
    void OnTriggerEnter(Collider c)
    {
        if (c.transform.root.tag == "Player")
        {
            LSC.youWin();
        }
    }
Bu kodu yaz ve kaydet.
3-Para yazan yere, LevelControlScript'in vardıya hani ilk yazdığın, konu başın da ki mesajın da gösterdiğin 3 tane script, işte onlardan biri olan LevelControlScript'in artık hangi objede ise o objeyi sürükleyip, Para kısmın da ki boş yere bırak.
4-Son bir sorum var, sen konunun en başında gösterdiğin şu 3 script'i kullanıyormusun ? Onları kullnamıyorsan hata verecek elbette, ama eğer LevelControlScript'i ve diğerlerini bir objeye attıysan, ayarlarını yaptıysan LevelControlScript'in atılı olduğu objeyi, labirentin sonun da ki yani kontrol kodunu attığın objende ki sağ tarafda bulunan inspector kısımından ki Para yerine sürükle.
5-Ayrıca karakterin, yani oyunun ana karakteri, senin kontrol ettiğin obje/oyuncu/karakter artık her ne ise onun adını sağ tarafında ki inspector kısmından Tag kısmına gelip orada ki Tag butonuna basıp listeden Player'i seç ve karakterin Tag'ini Player yap.
 
Çözüm

Predator Titan

Kilopat
Katılım
13 Ekim 2015
Mesajlar
1.382
Makaleler
11
Çözümler
12
PlayerPrefs denilen sistemi kullandıysan, evet kaydedecektir. Lakin şimdi pek de gerek yok. Ciddi ve gerçek bir işe başladığınız zaman baakbilirsiniz dediğim kod'a. Ayrıca özür dilenecek bir şey dostum, dediğim gibi dili öğrenmeye başla devamı gelecek.
 
KS
KS
Yiğit Öztoprak

Yiğit Öztoprak

Hectopat
Katılım
24 Ağustos 2017
Mesajlar
1.746
Çözümler
3
Yer
Milkway
PlayerPrefs denilen sistemi kullandıysan, evet kaydedecektir. Lakin şimdi pek de gerek yok. Ciddi ve gerçek bir işe başladığınız zaman baakbilirsiniz dediğim kod'a. Ayrıca özür dilenecek bir şey dostum, dediğim gibi dili öğrenmeye başla devamı gelecek.
Peki PlayerPrefs sistemi nasıl kullanılıyor? Onu da öğrenmek istiyorum da. Önerebileceğiniz öğretici video vs var mı? Ya da siz de anlatabilirsiniz.
 

Predator Titan

Kilopat
Katılım
13 Ekim 2015
Mesajlar
1.382
Makaleler
11
Çözümler
12
Oldukça basit aslında.
Bir değişken yaratacaksınız en başta. int ya da string bu size kalmış.
örn;
public int deger=0;

void Start(){
deger= PlayerPrefs.GetInt("Buraya gireceğiniz kelime önemli, bundan sonra deger int'ini bu temsil edecek. Örneğin ben "Save" Diyeceğim");
}
void Update(){
deger++;
if(deger==100)
{
PlayerPrefs.SetInt("Save", deger);
}
}

Bu kadar, oyun başladıktan sonra hızla deger değişkeni artacak ve 100 olduğu zaman değeri kaydedeceğiz.
Kaynak için burası.
 
KS
KS
Yiğit Öztoprak

Yiğit Öztoprak

Hectopat
Katılım
24 Ağustos 2017
Mesajlar
1.746
Çözümler
3
Yer
Milkway
Oldukça basit aslında.
Bir değişken yaratacaksınız en başta. int ya da string bu size kalmış.
örn;
public int deger=0;

void Start(){
deger= PlayerPrefs.GetInt("Buraya gireceğiniz kelime önemli, bundan sonra deger int'ini bu temsil edecek. Örneğin ben "Save" Diyeceğim");
}
void Update(){
deger++;
if(deger==100)
{
PlayerPrefs.SetInt("Save", deger);
}
}

Bu kadar, oyun başladıktan sonra hızla deger değişkeni artacak ve 100 olduğu zaman değeri kaydedeceğiz.
Kaynak için burası.

hm.PNG

Yani o kodu yazıp karakterin içine atınca şöyle bir yer açılıyor değil mi? Oyunu başlatınca o değer durmadan artıyor. Zaten öyle olmalı değil mi? Bunu becerdim galiba :) Başka bir şey yapmak gerekiyor mu yoksa sadece o kodu yazıp player içine atmak yetiyor mu?
 

Predator Titan

Kilopat
Katılım
13 Ekim 2015
Mesajlar
1.382
Makaleler
11
Çözümler
12
Eki Görüntüle 311913
Yani o kodu yazıp karakterin içine atınca şöyle bir yer açılıyor değil mi? Oyunu başlatınca o değer durmadan artıyor. Zaten öyle olmalı değil mi? Bunu becerdim galiba :) Başka bir şey yapmak gerekiyor mu yoksa sadece o kodu yazıp player içine atmak yetiyor mu?
Dostum bu sadece örnek ti :) Bu şuan ki projen için yazılmış bir kod değil sadece deneme amaçlı bir örnek idi.
 
Katılım
22 Ekim 2017
Mesajlar
57
Merhaba konu için biraz geç oldu sanırım.

Bölüm geçme ile ilgili bir sorununuz var sanırım.

Sizin için örnek Unity projesi oluşturdum umarım sorununuz çözülür.

Bölümler arası geçiş için izleyeceğiniz yolu resimle açıklamaya çalıştım.

anlatim1.gif


anlatim2.gif


Örnek proje için burdan erişebilirsiniz projeye bakarak projenize göre yapılandırıp eksikliklerinizi giderebilirsiniz.
Kolay gelsin.
 
KS
KS
Yiğit Öztoprak

Yiğit Öztoprak

Hectopat
Katılım
24 Ağustos 2017
Mesajlar
1.746
Çözümler
3
Yer
Milkway
Merhaba konu için biraz geç oldu sanırım.

Bölüm geçme ile ilgili bir sorununuz var sanırım.

Sizin için örnek Unity projesi oluşturdum umarım sorununuz çözülür.

Bölümler arası geçiş için izleyeceğiniz yolu resimle açıklamaya çalıştım.

Eki Görüntüle 312551

Eki Görüntüle 312552

Örnek proje için burdan erişebilirsiniz projeye bakarak projenize göre yapılandırıp eksikliklerinizi giderebilirsiniz.
Kolay gelsin.
Çok teşekkür ederim. Peki bölüm seçim menüsü nasıl yapabilirim? Mesela 1. bölüm hariç her bölüm kilitli olsun. 1.yi geçince 2., 2.yi geçince 3. bölüm açılsın. Ve bir bölüm seçim menüsünden açılan bölümlerden istenilen bölüm oynanabilsin. Ama kapalı bölümler oynanamasın. Anladınız siz işte :D
 
Yukarı