Arama butonu
Bu konudaki kullanıcılar: 1 misafir
17
Cevap
520
Tıklama
0
Öne Çıkarma
Unity - 1'den 10'a Kadar Saydırmak
1
6 yıl
Yarbay
Konu Sahibi

sayı += 1;
if (sayı > 10)
{
sayı = 10;
}


Aslında böyle yapabilirim fakat bana kötü performanslı gibi geldi. Çünkü 10'u geçince sürekli 10'a sabitliyor. 1'den 10'a kadar sayının artmasının daha iyi bir yolu var mıdır acaba?



B
6 yıl
Yüzbaşı

For dongusu isinize yarayabilir.

https://www.kodlamamerkezi.com/c-net/c-for-dongusu-ornekler-ile-detayli-anlatim/



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
1
6 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: Baxa

For dongusu isinize yarayabilir.

https://www.kodlamamerkezi.com/c-net/c-for-dongusu-ornekler-ile-detayli-anlatim/
Böyle yaptım fakat hâlâ sonsuza kadar sayıyor:
for (float i = 0; i <= 10; i++) 
{
sayı += i;
}


Böyle yapınca da hiç saymadan direk 10'da kalıyor:

for (float i = 0; i <= 10; i++) 
{
sayı = i;
}


Bu mesaja 1 cevap geldi.
B
6 yıl
Yüzbaşı

quote:

Orijinalden alıntı: 1ht1baron

Böyle yaptım fakat hâlâ sonsuza kadar sayıyor:
for (float i = 0; i <= 10; i++) 
{
sayı += i;
}


Böyle yapınca da hiç saymadan direk 10'da kalıyor:

for (float i = 0; i <= 10; i++) 
{
sayı = i;
}


Alıntıları Göster
for (float i = 0; i <= 10; i++)

{

sayı ++

}



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
1
6 yıl
Yarbay
Konu Sahibi

Maalesef böyle olunca da sonsuza kadar sayıyor.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Baxa
B
6 yıl
Yüzbaşı

quote:

Orijinalden alıntı: 1ht1baron

Maalesef böyle olunca da sonsuza kadar sayıyor.
for (int i = 0; i <=10; i++)

{

sayi ++

}





< Bu mesaj bu kişi tarafından değiştirildi Baxa -- 19 Nisan 2018; 12:30:28 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
1
6 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: Baxa

for (int i = 0; i <=10; i++)

{

sayi ++

}

Alıntıları Göster
Evet, bunu da denedim. Sayı 11'er 11'er sonsuza kadar artarak devam ediyor.


Bu mesaja 1 cevap geldi.
B
6 yıl
Yüzbaşı

quote:

Orijinalden alıntı: 1ht1baron

Evet, bunu da denedim. Sayı 11'er 11'er sonsuza kadar artarak devam ediyor.

Alıntıları Göster
Kodun tam halini ve sonucun resmini atarmisin



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
1
6 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: Baxa

Kodun tam halini ve sonucun resmini atarmisin

Alıntıları Göster
	 
public int sayı;
void Start ()
{
sayı = 0;
}
void Update()
{
for (int i = 0; i <= 10; i++)
{
sayı ++ ;
}
}


< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.
B
6 yıl
Yüzbaşı

For u update harici bir yerde denermisiniz.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @1ht1baron
1
6 yıl
Yarbay
Konu Sahibi

Bir değişiklik yok. Yine 11'in katı şeklinde artıyor.
void Sayı ()
{
for (int i = 0; i <= 10; i++)
{
sayı ++ ;
}
}


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Baxa
A
6 yıl
Çavuş

quote:

Orijinalden alıntı: 1ht1baron

Bir değişiklik yok. Yine 11'in katı şeklinde artıyor.
void Sayı ()
{
for (int i = 0; i <= 10; i++)
{
sayı ++ ;
}
}
Update methodun da bu for döngüsünü kullanırsanız, update methodu her frame çalıştığı için örnek olarak ortalama 60 frame dönen bir oyun için 1/60 saniye demek oluyor bu da , her saniyenin 1/60'ında bu for methodu çalışacak yani 1 saniye de (sabit 60fps varsayarsak) sayı rakamı 60*11 = 660 olacak. 1 kerelik çalıştırdığınızda ise örneğin start metodunda sayı direk 10'a eşitlenir en azından siz öyle görürsünüz, 1'er sayı arttırarak yapar bunu fakat çok hızlı yaptığı için direk sayı = 10 elde edersiniz. Debug.Log(sayı) olarak extra altına eklerseniz, 1'er 1'er arttığını görürsünüz.



1
6 yıl
Yarbay
Konu Sahibi

Sorunu şimdilik böyle yaparak çözdüm:

number = 0;
}
void Update()
{
if (sayi != 10) //check if number is not 10
{
sayi += 1;

if(sayi > 10) //check to make sure the number is not more then 10
{
// it was more then 10, lets force it to be 10
sayi = 10;
}

}
}





< Bu mesaj bu kişi tarafından değiştirildi 1ht1baron -- 19 Nisan 2018; 20:12:2 >
Bu mesaja 1 cevap geldi.
A
6 yıl
Çavuş

quote:

Orijinalden alıntı: 1ht1baron

Sorunu şimdilik böyle yaparak çözdüm:

number = 0;
}
void Update()
{
if (sayi != 10) //check if number is not 10
{
sayi += 1;

if(sayi > 10) //check to make sure the number is not more then 10
{
// it was more then 10, lets force it to be 10
sayi = 10;
}

}
}
IEnumerator Say() 
{

for(int i = 0; i < 10; i++)
{

sayı++;

yield return null;

}

}



Yukarıda ki Coroutine şeklinde de basitçe istediğini yapabilirsin , 1 kere çalıştırman yeterli StartCoroutine(Say()); şeklinde, sürekli update methodunda sayı değerini o şekilde kontrol etmeni tavsiye etmem , alternatifi varken en azından.
yield return null kısmında method orda durup bir sonra ki frame'i bekliyor yani aslında update fonksiyonuyla aynı işlevi görüyor, for döngüsü bitene kadar çalışacak sonra sonlanacak zaten.

Daha fazla bilgi almak istersen aşağıda ki linke bakmanı da tavsiye ederim.Farklı şekillerde de kullanılabiliyor çünkü işine yarayabilir.
https://docs.unity3d.com/Manual/Coroutines.html


Bu mesaja 2 cevap geldi.
1
6 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: abasgun

IEnumerator Say() 
{

for(int i = 0; i < 10; i++)
{

sayı++;

yield return null;

}

}



Yukarıda ki Coroutine şeklinde de basitçe istediğini yapabilirsin , 1 kere çalıştırman yeterli StartCoroutine(Say()); şeklinde, sürekli update methodunda sayı değerini o şekilde kontrol etmeni tavsiye etmem , alternatifi varken en azından.
yield return null kısmında method orda durup bir sonra ki frame'i bekliyor yani aslında update fonksiyonuyla aynı işlevi görüyor, for döngüsü bitene kadar çalışacak sonra sonlanacak zaten.

Daha fazla bilgi almak istersen aşağıda ki linke bakmanı da tavsiye ederim.Farklı şekillerde de kullanılabiliyor çünkü işine yarayabilir.
https://docs.unity3d.com/Manual/Coroutines.html

Alıntıları Göster
Teşekkür ederim. Yarın deneyeceğim.



< Bu ileti mini sürüm kullanılarak atıldı >

1
6 yıl
Yarbay
Konu Sahibi

Yine sonsuza kadar saymaya devam ediyor. Fakat aslında updatenin içinde karakter sağa baktığı an 10'a kadar saydırmasını istediğim için sonsuza kadar sayıyor olabilir mi?
 
void Update ()
{
if (karakterSağaBakarsa == true)
{ StartCoroutine(Say()); }
}

IEnumerator Say()
{

for(int i = 0; i < 10; i++)
{

sayı++;

yield return null;

}

}


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @abasgun
K
6 yıl
Yüzbaşı

bu sayma işini bir fonksiyona ata ve o fonksiyonu gerektiği anda çağırarak işlemi gerçekleştir.



< Bu ileti mobil sürüm kullanılarak atıldı >

A
6 yıl
Çavuş

quote:

Orijinalden alıntı: 1ht1baron

Yine sonsuza kadar saymaya devam ediyor. Fakat aslında updatenin içinde karakter sağa baktığı an 10'a kadar saydırmasını istediğim için sonsuza kadar sayıyor olabilir mi?
 
void Update ()
{
if (karakterSağaBakarsa == true)
{ StartCoroutine(Say()); }
}

IEnumerator Say()
{

for(int i = 0; i < 10; i++)
{

sayı++;

yield return null;

}

}
Yukarda da bahsetmistim update fonksiyonunda çağırırsaniz zaten sürekli arttirmaya devam eder. Sayma islemi yapmak istediğiniz yerde sadece 1 kere çağırın methodu 10'a kadar sayar bırakır. Ya da update içinde de 1 kere kullanmak istiyorsanız extra bir boolean ile kontrol edin.





< Bu mesaj bu kişi tarafından değiştirildi abasgun -- 20 Nisan 2018; 10:52:18 >

< Bu ileti mobil sürüm kullanılarak atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.