Unity 2D error CS1002: ; expected

Ymn_75

Femtopat
Katılım
1 Şubat 2024
Mesajlar
34
Daha fazla  
Cinsiyet
Erkek
Kodum:

C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public UnityEngine.UI.Text ilkSayi, ikinciSayi, islem, cevap, sonuc;
    int sayi1, sayi2, islemIsareti;
    int islemSonucu;
    // Start is called before the first frame update
    void Start()
    {
        sayi1 = Random.Range(1, 99);
        sayi2 = Random.Range(1, 99);
        islemIsareti = Random.Range(1, 4);
        switch (islemIsareti)
        {
            case 1:
                islem.text = "+";
                islemSonucu = sayi1 + sayi2;
                break;
            case 2:
                islem.text = "-";
                islemSonucu = sayi1 - sayi2;
                break;
            case 3:
                islem.text = "*";
                islemSonucu = sayi1 * sayi2;
                break;
            case 4:
                islem.text = "/";
                islemSonucu = sayi1 / sayi2;
                break;
        }
        ilkSayi.text = sayi1 + "";
        ikinciSayi.text = sayi2 + "";
    }

    // Update is called once per frame
    void Update()
    {

        public void CevapKontrol() {
            if (int.Parse(cevap.text) == islemSonucu)
                sonuc.text = "Doğru";
        } else {
            sonuc.text = "Yanlış";
        }
    }
}
 
Hata 46. satırda
1706832291277.png
 
Tamam sen yine de işaretlediğim yere dikkat et. Fonksiyon içerisinde fonksiyon tanımlıyor, ve birden fazla parantez hatası yapıyorsun farkında değilsin.
Kodu baştan sona okudum kurstaki ile aynı ama 2020de çıktığından farklılık olabilir
Hatalı kısımların nereler olduğunu yada hatalı kısımların doğru halini gönderebilir misin?
 
Kodu baştan sona okudum kurstaki ile aynı ama 2020de çıktığından farklılık olabilir
Hatalı kısımların nereler olduğunu yada hatalı kısımların doğru halini gönderebilir misin?
Kurstakine göre kopyala yapıştır yaparak mı kod yazıyorsun? Neyse çok önemli değil de, parantez takibi yaparak gitmeyi öğrenmen lazım. Açılan kapanan parantezleri okusan hatayı çoktan çözmüştün.

Update fonksiyonu içerisinde public void CevapKontrol() diye bir fonksiyon tanımlıyorsun. Teknik olarak bunda yanlış tek şey public kullanımı çünkü bu bir lokal değişken oluyor artık. İlk hata bu.

İkinci hata, CevapKontrol fonksiyonunun içerisinde bir if statement var. Ve bu if statement parantez açılmadan fonksiyonun içine yazılmış. Ancak else fonksiyonun dışında yer alıyor. Bu da bu else'in hiç bir if'e follow up olmadığı anlamına geliyor.

Üçüncü hata, her lokal değişkeni tanımladıktan sonra noktalı virgülle tanımı bitirmelisin. Ancak sen fonksiyondan sonra else kullanıyorsun dolayısıyla noktalı virgül kullanmaman gerektiğine kanaat etmişsin.

Eğer gerçekten fonksiyon içinde fonksiyon tanımlayacaksan, doğru kullanıma örnek;
C#:
void foo() {
    void bar() {
        Console.WriteLine("Test!");
    };
    bar();
}
foo();

2020'de çıktığından bir farklılık söz konusu değil. Sadece dikkatsizsin.

Doğrusu muhtemelen şöyle bir şey olacak;
C#:
    // Update is called once per frame
    void Update()
    {
        
    }

    public void CevapKontrol() {
        if (int.Parse(cevap.text) == islemSonucu)
            sonuc.text = "Doğru";
        else {
            sonuc.text = "Yanlış";
        }
    }
 
sizin verdiğiniz kodu yapıştırdım bu sefer bu hata geldi
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public UnityEngine.UI.Text ilkSayi, ikinciSayi, islem, cevap, sonuc;
    int sayi1, sayi2, islemIsareti;
    int islemSonucu;
    // Start is called before the first frame update
    void Start()
    {
        sayi1 = Random.Range(1, 99);
        sayi2 = Random.Range(1, 99);
        islemIsareti = Random.Range(1, 4);
        switch (islemIsareti)
        {
            case 1:
                islem.text = "+";
                islemSonucu = sayi1 + sayi2;
                break;
            case 2:
                islem.text = "-";
                islemSonucu = sayi1 - sayi2;
                break;
                case 3:
                islem.text = "*";
                islemSonucu = sayi1 * sayi2;
                break;
                case 4:
                islem.text = "/";
                islemSonucu = sayi1 / sayi2;
                break;
        }
        ilkSayi.text = sayi1 +"";
        ikinciSayi.text = sayi2+"";
    }

    // Update is called once per frame
    void Update()
    {

    }

    public void CevapKontrol()
    {
        if (int.Parse(cevap.text) == islemSonucu)
            sonuc.text = "Doğru";
        else
        {
            sonuc.text = "Yanlış";
        }
    }
 

Geri
Yukarı