folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Unity Playerprefs Düzgün Çalışmıyor C#



Unity Playerprefs Düzgün Çalışmıyor C#

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ekerci
    Ekerci's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    Slm müridler.

    yaklaşık 4 saattir bakıyorum fakat bulamadım vede anlayamadım.level load yapmak istiyorum, fakat kod playerPrefs.getint() kısmına gelince 1 olması gereken yerde 2 oluyor.

    teamviewerla biri yardım ederse çok sevinirim


    Konu ID: 112846 Konuyu Acan : Ekerci Konu Başlığı : Tahribatın en sevdiği adam ? Silinme Sebebi : 3 sayfadır takip ediyorum beni seven kimse çıkmadı. alacağınız olsun müridler
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ekerci
    Ekerci's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek
    using UnityEngine;
    using System.Collections;
    
    public class GameManager : MonoBehaviour {
    
    
    	public  int currentScore;
    	public  int highscore;
    
    	public int currentLevel;
    	public  int unlockedLevel;
    	
    
    	void Start(){
    		print (currentLevel + "ilk");
    
    				if ((PlayerPrefs.GetInt ("Level Completed"))> 0 ) {
    						currentLevel = PlayerPrefs.GetInt ("Level Completed");
    			
    		} else { print("r u here");
    						currentLevel=0;
    
    				}
    		
    		print (currentLevel + "iki");
    		}
    		
    	public  void CompleteLevel(){
    		print ("yeppa");
    				if (currentLevel < 2) {
    			currentLevel+=1;
    			print("here 1234567?"+currentLevel);
    			PlayerPrefs.SetInt("Level Completed",currentLevel);
    			PlayerPrefs.SetInt("Level"+ currentLevel.ToString()+" score",currentScore);
    						Application.LoadLevel (currentLevel);
    				} else 
    						print ("u win");
    		}
    	}
    
    
    	
    
    çıktı alıyorum nerde ne oluyor diye; print ilk olan yerde 0 değeri gösteriyor, print iki olan yerde de 2 gösteriyor.fakat 1 göstermesi lazım.kendine fazladan 1 ekliyor.niye olduğunu çözemedim.zaten complete levela girmiyor çünkü gelirken currentlevel 2 olarak geliyor ve u win çıkıyor
    Ekerci tarafından 16/Kas/14 14:54 tarihinde düzenlenmiştir

    Konu ID: 112846 Konuyu Acan : Ekerci Konu Başlığı : Tahribatın en sevdiği adam ? Silinme Sebebi : 3 sayfadır takip ediyorum beni seven kimse çıkmadı. alacağınız olsun müridler
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    heisenberg
    heisenberg's avatar
    Kayıt Tarihi: 08/Aralık/2011
    Erkek

    2000 kişi bakmış kimse cevap yazmamış upp olsun


    Basit yaşayacaksın basit. Sanki yaşamın bir gün sona erecekmiş gibi basit.. cay, simit ve peynirle...
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ekerci
    Ekerci's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    umudu kaybettim


    Konu ID: 112846 Konuyu Acan : Ekerci Konu Başlığı : Tahribatın en sevdiği adam ? Silinme Sebebi : 3 sayfadır takip ediyorum beni seven kimse çıkmadı. alacağınız olsun müridler
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    currentLevel = PlayerPrefs.GetInt ("Level Completed");

    Atamayı burda yapıyorsun burdan 2 dönüyor demek ki. Level Completed yerine başka bi değer girmen gerekiyor.


    Si vis pacem para bellum.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    http://docs.unity3d.com/ScriptReference/PlayerPrefs.html

     

    On Windows, PlayerPrefs are stored in the registry under HKCU\Software\[company name]\[product name] key, where company and product names are the names set up in Project Settings.

     


    Si vis pacem para bellum.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    solstice
    solstice's avatar
    Kayıt Tarihi: 04/Nisan/2008
    Erkek

    hocam açıkcası koddan bişi anlayamadım( ne yapmak istediğini de anlayamadım). ama loadlevel scene ile birlikte çalışıyor. Birden fazla sahne ekleme kısmı ile. ve application load levelin çalışma prensibinde playerpref kullanacaksan daha farklı bir yol izlemen gerekebilir.

    ben sana playerpref kullanımını anlatayım.

    Playerpref ile var olan datayı hafızaya atarsın. ve kullanıcı bir kez daha oyuna girdiğinde son hafızadaki bilgi ne ise ona göre bir loadlevel (scene) çalıştırırsın.

    bu kodda butonla gösterdim. butona her tıkladıgında ve uygulamayı aç kapa yaptıgında prefin nasıl yükseldiğini göreceksin. ama sen her oyun bittiğinde farklı bir levele yani oluşturduğun farklı bir sahneyi çalıştıracaksan. oyunun her bittiği bölümde şu şekilde bir mantık izlemen lazım.

    using UnityEngine;
    using System.Collections;
    
    public class GameManager : MonoBehaviour {
    	
    	public bool isLevel = false;
    	public int currentLevel;
    	
    	void Start(){
    		print (PlayerPrefs.GetInt("currentlevel",currentLevel).ToString());
    	}
    
    	void OnGUI() {
    		if(!isLevel){
    			if (GUI.Button (new Rect (10, 10, 100, 100), "Level Arttır")) {
    				currentLevel +=1;
    				int tempLevel = PlayerPrefs.GetInt("currentlevel",currentLevel);
    				currentLevel = tempLevel + currentLevel;
    				PlayerPrefs.SetInt("currentlevel",currentLevel);
    				isLevel = true;
    			}
    		}
    	}
    }


    https://www.youtube.com/watch?v=k6LrGZGqYn8
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    solstice
    solstice's avatar
    Kayıt Tarihi: 04/Nisan/2008
    Erkek

    Ek olarak

    playerpref int setint, getint, haskey gibi inceleyip ne şekilde kullanıldığına bakmanda fayda var. o kısıma hakim olduktan sonra sonra application.loadlevelin kullanım şekli yeni bir scene yüklerken ki static değerlerin, animasyonların ve ses efektlerininde çalışma prensibine bakman gerekecektir. çünkü problemler çıkıyor.

    Bu arada hocam void ongui ve void update bölümleri frame başına çalışır. yani sen orada belli bool kontroller yada farklı yöntemler izlemelisin. yoksa orada sabahtan aksama kadar hiç durmadan deli gibi değer basar. saniyede 100 kere basar. o yüzden kodda isLevel gibi bir bool değer kullandım.

    http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnGUI.html




    https://www.youtube.com/watch?v=k6LrGZGqYn8
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ekerci
    Ekerci's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    birazdan okuyacam.teamden yardım etmek isteyen varsa pm atabilir


    Konu ID: 112846 Konuyu Acan : Ekerci Konu Başlığı : Tahribatın en sevdiği adam ? Silinme Sebebi : 3 sayfadır takip ediyorum beni seven kimse çıkmadı. alacağınız olsun müridler
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ekerci
    Ekerci's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    beyler abim buldu sorunu.mainmenu kısmında playerprefs.setint 0 koydu.su an düzgün çalışıo.anlayamadıgım şey ben bunu gamemanager kısmında da yapmıstım.main menu leveli de 3:S


    Konu ID: 112846 Konuyu Acan : Ekerci Konu Başlığı : Tahribatın en sevdiği adam ? Silinme Sebebi : 3 sayfadır takip ediyorum beni seven kimse çıkmadı. alacağınız olsun müridler
Toplam Hit: 3305 Toplam Mesaj: 10