Unity'de toplanan altınları markete aktarma

Abdullah63

Hectopat
Katılım
20 Mayıs 2021
Mesajlar
120
Daha fazla  
Cinsiyet
Erkek
Vallahi buradan sora sora bitireceğim bu oyunu sanki :) Ama bana kaynaklardan araştıra araştıra kendi projemde uygulayarak Unity öğrenebileceğimi yine buradaki bir arkadaş söylemişti ve işe yarıyor. Neyse. Oyunuma animasyonlu altınlarımı attım ve tıpkı engellerim gibi rastgele ve belli aralıklarla spawnlanmalarını sağladım.

IMG_20210624_112441[1].jpg


Oyunumun şöyle bir görüntüsü var. Her bir altın yukarıdaki altın sayacını 2 arttırıyor ve bu değer ölüm ekranında sonuç şeklinde de yer alıyor. Altınların sayısal değerini tutan değişken "Gold" ve PlayerPrefs. SetInt("altin", Gold); dedim ve bunu market sahnemdeki mygolds değişkenimi mygolds += PlayerPrefs. GetInt("altin"); şeklinde yazdırdım ve ne olur ne olmaz shopmanager scriptimin Update'i içinde SetInt("mygolds", mygolds) şeklinde kaydedilmesini, Start içinde yani markete girdiğimde GetInt("mygolds") şeklinde yüklenmesini istedim. Ama sadece son el kaç altın topladıysam o altın ekrana yazdırılıyor. Bir yerde yanlış yaptığımı zaten biliyorum. Bu işin doğrusunu bilen biri bana yardımcı olabilir mi? Şimdiden teşekkürler.
 
Son düzenleyen: Moderatör:
Playerprefts de 2 adet değer tutuyorsun. birisi son oyunda kazandığı altın, diğeri toplam altın. Doğru mudur? Sıkıntı şu, değerleri birbiri ile karıştırıyorsun. Son oyundaki altını playerprefts de tutmaya gerek yok. Neyse konumuz o değil. mygolds değişkenini son oynadığı oyundaki altın ile topluyorsun. ve daha sonra tekrar mygolds değişkenini tekrar set ediyorsun. Sıkıntı burada olmalı, çünkü bir toplama işlemi var. İşlem kabaca şu şekilde olmalı.
C#:
int myGolds = PlayerPrefs.GetInt('myGolds');
myGolds += PlayerPrefs.GetInt('altin');
PlayerPrefs.SetInt('myGolds', myGolds);

Son eldeki altınlar geldiği için galiba myGolds değişkenini 0 olarak set ediyorsun. ilk satırdaki koda dikkat etmelisin. Mygolds degişkeni tüm altınları tutmalı.
 
Playerprefts de 2 adet değer tutuyorsun. birisi son oyunda kazandığı altın, diğeri toplam altın. Doğru mudur? Sıkıntı şu, değerleri birbiri ile karıştırıyorsun. Son oyundaki altını playerprefts de tutmaya gerek yok. Neyse konumuz o değil. mygolds değişkenini son oynadığı oyundaki altın ile topluyorsun. ve daha sonra tekrar mygolds değişkenini tekrar set ediyorsun. Sıkıntı burada olmalı, çünkü bir toplama işlemi var. İşlem kabaca şu şekilde olmalı.
C#:
int myGolds = PlayerPrefs.GetInt('myGolds');
myGolds += PlayerPrefs.GetInt('altin');
PlayerPrefs.SetInt('myGolds', myGolds);

Son eldeki altınlar geldiği için galiba myGolds değişkenini 0 olarak set ediyorsun. ilk satırdaki koda dikkat etmelisin. Mygolds degişkeni tüm altınları tutmalı.
IMG_20210624_194246[1].jpg
UpdateGold()'u karakterimin altına her çarptığında çağırıyorum.
IMG_20210624_194529[1].jpg Bu fonksiyon da marketimdeki ShopManager objesinde.
 
13. satırı myGolds = PlayerPrefs.GetInt("mygolds"); şeklinde yapar mısın. Yani getInt den aldıgın değeri mygolds değişkenine ata.
C#:
shopmanager:
void Start() {
mygolds = PlayerPref.GetInt("mygolds");
goldtext.text = mygolds.ToString();
}

public void BackButton() {
PlayerPrefs.SetInt("mygolds", mygolds);
}
gamemanager.cs:
public void UpdateGold() {
gold++;
goldtext.text = (5 * gold).ToString();
finishgold.text = (5 * gold).ToString();
PlayerPrefs.SetInt("altin", gold * 5);
int mygolds = PlayerPrefs.GetInt("mygolds");
mygolds += PlayerPrefs.GetInt("altin");
PlayerPrefs.SetInt("mygolds", mygolds);
}

İki el oynuyorum 20000 artıyor. Acaba eskiden hep topladığım paralar mı birikmiş.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı