NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
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
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
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.