NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Unity3D (C#) chyby ve visual studiu

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
dez1nd
Člen
Avatar
dez1nd:13.10.2017 13:29

Ahoj, nevíte kde je chyba ?

public Transform getCurrentWeapon()
    {
        Transform currentWeapon;

        foreach (Transform weapon in weapons)
        {
            if (weapon.gameObject.activeInHierarchy)
                currentWeapon = weapon;
            else
                currentWeapon = null;
        }

        return currentWeapon;
    }

Chyba CS0165 Použila se nepřiřazená lokální proměnná currentWeapon.

Editováno 13.10.2017 13:29
 
Odpovědět
13.10.2017 13:29
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na dez1nd
gcx11:13.10.2017 13:39

Ahoj, proměnná není přiřazená v případě, že v kolekci nic není. Pak cyklus neproběhne.

 
Nahoru Odpovědět
+2
13.10.2017 13:39
Avatar
Odpovídá na dez1nd
Erik Šťastný:13.10.2017 13:54

Dovolím si trošku zjednodušení :)

public Transform getCurrentWeapon()
    {
        foreach (Transform weapon in weapons)
        {
            if (weapon.gameObject.activeInHierarchy)
                return weapon
        }
        return null
    }
Editováno 13.10.2017 13:55
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
+2
13.10.2017 13:54
Avatar
dez1nd
Člen
Avatar
Odpovídá na gcx11
dez1nd:13.10.2017 14:52

Jenže v tomto případě nikdy není kolekce prázdná.

 
Nahoru Odpovědět
13.10.2017 14:52
Avatar
dez1nd
Člen
Avatar
Odpovídá na Erik Šťastný
dez1nd:13.10.2017 14:54

jop, takto jsem to měl hned na poprvé, jen mi to házelo zase jinou chybu že ne všechny cesty kódu vrací hodnotu.
zřejmě to bylo tím, že jsem dal return do else a ne mimo cyklus.

Děkuju

 
Nahoru Odpovědět
13.10.2017 14:54
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na dez1nd
gcx11:13.10.2017 15:09

To víš ty, ale kompilátor předpokládá to nejhorší možné, co by se mohlo stát.

 
Nahoru Odpovědět
13.10.2017 15:09
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.