
UNITY 3D c# Toggle button
Ahoj, chci v Unit udělat skript, že když je hudba pozastavená, tak se inOn zaškrtne. Tady je kód, který mi nefunguje :/. Předem dík za pomoc.
void GetToogle ()
{
if (AudioListener.pause == true)
{
Toggle.isOn = true;
}
else
{
Toggle.isOn = false;
}
}
Co přesně nefunguje? Jakou chybu to píše?
Jinak i kdyby to fungovalo, tak ten kód je zbytečně složitý a dal by se zjednodušit na:
Kromě toho GetToggle není vhodný název metody. Pokud název metody začíná na Get, tak obvykle něco vrací.
Já mám Toggle button, který dělá že mi pozastaví hudbu a po dalším kliknutí jí zapne a přitom se mění ikona a když tu hudbu vypnu, tak tam je přeškrtnutý reprák a když jdu do jiné scény a vrátím se tak ten reproduktor není přeškrtnutý a hudba je stále pozastavená. A nepíše to žádnou chybu.
Ale ten tvůj kód nenastavuje AudioListener podle Togglu nýbrž přesný opak. Podle AudioListeneru nastavuje Toggle.
Já myslel že je to správně,že pokud je hudba pozastavená, tak se tam ukáže přeškrtnutý reprák a když není pozastavená, tak nepřeškrtnutý. Přikládám kód
Na těch screenshotech je ale něco jiného, než v první příspěvku.
Odkud se volají metody ToogleSound a GetToggle?
ToggleSound se volá z Toggle
GetToggle se nevolá
Tenhle c# kód je přidělený Canvas
Proč tam máš teda metodu, která se nevolá? Neměla by se právě volat, když se vrátíš do téhle scény?
A z čeho by se měla volat, z toho Toggle?
No to musíš vědět ty, já neznám logiku tvé aplikace.
Já jsem v tomhle úplný začátečník a taky nevím od kud to mám volat.
Tady je ještě video: xc6qekjf
Tak to GetToggle bys měl volat, když klikneš na Nastavení.
To GetToggle jsem dal k tomu nastavení v menu a pořád to nejde.
A opravdu se volá? A máš to ve verzi, kterou máš na screenshotu, nebo kterou jsi napsal v prvním příspěvku?
Mám tu verzi na screenshotu.
A nemá to teda být přesně obráceně? Protože podle jednoho ze screenshotů to vypadá, že IsOn = false když je zobrazený zelený obrázek.
Už jsem to změnil na
public void GetToggle()
{
if(AudioListener.pause == true)
{
toggleBool1.isOn = true;
}
else
{
toggleBool1.isOn = false;
}
}
a pořád to nejde :/, nechceš jít na TeamViewer?
Nechci. Jsi si teda jistý, že se to volá? Pokud ano, použij debugger a prokrokuj si to.
Když kliknu na Nastavení, tak se ukáže tohle:
A co je teda na řádku 33?
toggleBool1.isOn = true;
Takže toggleBool1 je null. Kde to nastavuješ?
Ten skript mám přidělený u Canvasu v první scéně a tam nemůžu přidělit ten Toggle.
Proč bys nemohl?
Když kliknu na Canvas a potom v tom pravym sloupci si najdu ten skript UI Control a tam u tho je Toggle Bool 1 a tamu toho nejde dát Toggle, který v tý scéně není.
Každopádně v toggleBool1 něco musí být, abys to mohl použít. Takže do toho budeš muset něco nejdřív přiřadit, nejspíš pomocí GetComponent.
ok, jdu se naučit používat GetComponent.