Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
Unity3D InvokeRepeating komutu yokmuş gibi çalışıyor
Arkadaşlar C# dilinde başlıktaki kod çalışmıyor sanki hiç yazılmamış gibi devam ediyor. Herhangi bir sorun bulunamadı yazıyor ama kod çalışmıyor yardımcı olabilecek birileri varsa, bu işten anlayan C# ve Unity bilen; sıkıntı yaşadığım kod satırlarının resmini atacağım.
Ivokerepeating derken, ınvokerepeating metodunu kast ediyorsun sanırım. Açıkçası ınvoke ve ınvokerepeatingi çok az kullandım, kullanan da görmedim. Onun yerine coroutine kullanabilirsin, en azından daha anlaşılır. Coroutine içerisinde repeat yaptırmak için ise while(true) döngüsü kullan.
[CODE lang="csharp" title="Coroutine" highlight="3,9,10,7"]
private void Start()
{
StartCoroutine(Foo());
}
public IEnumerator Foo()
{
while (true)
{
yield return new WaitForSeconds(1);
// Her bir saniyede olacak isler
}
yield return null;
}
}[/CODE]
@Foxie Başlığı düzelttiler söyledim. Aynen Invoke komutu şimdi ne yazmaya çalıştığımı anlatacağım sonra kodları göstereceğim sana.
Can = 100 Bunu karakterin canı 100 olarak düşünebilirsin.
Can 30'un altına indiği anda +30 can kazanılacak yani mesela 100'den 20'ye indi diyelim hemen 20+30 = 50 can olacak.
30 can gelecek. Lakin bu bir anda değil de 1 saniyede bir 2 can yüklenerek olacak.
Yani 20 > 50 değil
Bu şekilde 20 > 1sn sonra 22 > 1sn sonra 24 > 1sn sonra 26 > 1sn sonra 28 > 1sn sonra 30 diye 50'ye kadar devam edecek. Kodları yazdım bu şekilde ;
Unity'de çalıştırıp Public int değerini 20 yaptığım zaman direk patır patır 1 saniyede resimdeki gibi konsolda gözüküyor. Halbuki 2 can değerlerini 1'er saniye ara ile artırarak yapması lazım.
@Foxie Başlığı düzelttiler söyledim. Aynen Invoke komutu şimdi ne yazmaya çalıştığımı anlatacağım sonra kodları göstereceğim sana.
Can = 100 Bunu karakterin canı 100 olarak düşünebilirsin.
Can 30'un altına indiği anda +30 can kazanılacak yani mesela 100'den 20'ye indi diyelim hemen 20+30 = 50 can olacak.
30 can gelecek. Lakin bu bir anda değil de 1 saniyede bir 2 can yüklenerek olacak.
Yani 20 > 50 değil
Bu şekilde 20 > 1sn sonra 22 > 1sn sonra 24 > 1sn sonra 26 > 1sn sonra 28 > 1sn sonra 30 diye 50'ye kadar devam edecek. Kodları yazdım bu şekilde ;
Unity'de çalıştırıp Public int değerini 20 yaptığım zaman direk patır patır 1 saniyede resimdeki gibi konsolda gözüküyor. Halbuki 2 can değerlerini 1'er saniye ara ile artırarak yapması lazım.
Test etmedim ama benzer mantıkta ilerleyebilirsin, kodunun çalışmama sebebi while döngüsü kullanıyor olman, yani her döngü saniyede bir kere çalışmıyor, o döngüyü o anda tamamlıyor ve can aniden artmış gibi oluyor