• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Skrypt w c# w unity, przycisk toggle

Object Storage Arubacloud
+1 głos
300 wizyt
pytanie zadane 11 stycznia 2021 w C# przez kubaa322 Użytkownik (710 p.)

Witam, mam problem. Otóż mam sobie toggle buttona(taki checkbox) i ma przypisaną funkcję ToggleMusic(). :

public void ToggleMusic()
    {
        if (!toggle.isOn)
        {
            this.volume = 0f;
        }

problem w tym, że użyć go można tylko raz... Przykład: jest włączony defaultowo na ON, klikam - zmienia się na OFF i muzyka się wyłącza - tak jak ma to działać. Jednak gdy chce go jeszcze raz ustawić na ON to muzyka się nie włącza. Tutaj jeszcze cały kod do sterowania muzyką jakby miało to pomóc :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Music : MonoBehaviour
{
    AudioSource audioSource;
    private float volume = 1f;
    Toggle toggle;
    private void Awake()
    {
        SetMusicSingletone();
    }
    private void Start()
    {
        audioSource = GetComponent<AudioSource>();
        toggle = FindObjectOfType<Toggle>();
    }
    private void Update()
    {
        audioSource.volume = this.volume;
        ToggleMusic();
    }
    public void ToggleMusic()
    {
        if (!toggle.isOn)
        {
            this.volume = 0f;
        }
    }
    private void SetMusicSingletone()
    {
        var music = FindObjectsOfType<Music>();
        if (music.Length > 1)
        {
            Destroy(gameObject);
        }
        else
        {
            DontDestroyOnLoad(gameObject);
        }
    }
}

Z góry dzięki za pomoc!

komentarz 11 stycznia 2021 przez JakSky Stary wyjadacz (14,770 p.)

Może dlatego, że masz w kodzie tylko;

this.volume = 0f;

Nigdzie nie widzę, abyś zmieniał wartość na większą niż zero.

Po ponownym ustawieniu na ON musisz ponownie ustawić wartość dla zmiennej  volume.

komentarz 11 stycznia 2021 przez kubaa322 Użytkownik (710 p.)
Ok, racja zapomniałem o tym. Jest jeszcze jedna sprawa... Otóż jak wyjdę z tej sceny w której jest ten toggle button a potem wejde do niej z powrotem to ten toggle przestaje działać(zmiana ON na OFF nic nie zmienia w stosunku do muzyki)

1 odpowiedź

0 głosów
odpowiedź 11 stycznia 2021 przez Bondrusiek Maniak (61,370 p.)
    public void ToggleMusic()
    {
        if (!toggle.isOn)
        {
            this.volume = 0f;
        }
        else
        {
           this.volume = 1f;
        }
    }

Spróbuj tak. Według mnie Toggle powinien używać metod play() oraz pause() a nie tylko zmieniać głośność.

komentarz 11 stycznia 2021 przez VBService Ekspert (253,340 p.)

wink

public void ToggleMusic()
{
    this.volume = (! toggle.isOn) ? 0f : 1f;
}

 

komentarz 11 stycznia 2021 przez kubaa322 Użytkownik (710 p.)
Ok, racja zapomniałem o tym. Jest jeszcze jedna sprawa... Otóż jak wyjdę z tej sceny w której jest ten toggle button a potem wejde do niej z powrotem to ten toggle przestaje działać(zmiana ON na OFF nic nie zmienia w stosunku do muzyki)
komentarz 11 stycznia 2021 przez VBService Ekspert (253,340 p.)

Fajny efekt jest gdy do volume ON-OFF dodasz efekt Fade wink

komentarz 11 stycznia 2021 przez kubaa322 Użytkownik (710 p.)

Dzięki na razie ten problem z przechodzeniem między scenami musze ogarnąćwink

Podobne pytania

+1 głos
1 odpowiedź 397 wizyt
pytanie zadane 12 lipca 2019 w Systemy operacyjne, programy przez Bezy Bywalec (2,280 p.)
0 głosów
0 odpowiedzi 439 wizyt
pytanie zadane 25 lipca 2016 w C# przez dzidziamocarz Początkujący (370 p.)
0 głosów
1 odpowiedź 538 wizyt
pytanie zadane 27 marca 2021 w C# przez koleś34 Gaduła (3,270 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...