Jump to content
Unity Insider Forum

BGM / SFX wie regelt Ihr euren Sound?


F1R3ON

Recommended Posts

Ich würde gerne wissen wie du auf Array kommst?

 

Ich habe ein Script, wo quasi bestimmte Globale Werte drinne sind.

Beispiel Game.cs

 

Da hab ich dann musicVolume, environmentVolume usw.

Diese Werte sind auch mit PlayerPref gespeichert und werden auch einmalig beim Start geladen.

Jetzt kann man ein Script schreiben, wo du dann dein AudioSource verändern willst. Beispiel die Lautstärke beim Start setzen.

 

Natürlich muss man es erweitern, wenn man im Spiel (nicht im Menü) auch Lautstärke ändern kann. Da könnte man Events auslösen.

Was auch gehen könnte ist, dass man einen static List<AudioSource> einvironmentVolume hat, wo man vllt beim Start alle in AudioSource reinpackt. Und beim Lautstärke verändern über das (Pausen-)Menü, könnte man die Liste durchgehen und die Laustärke einstellen.

 

Was mir gerade spontan einfällt und auch vllt geht ist, dass man AudioSource im neuem Script vererbt. Damit kann man ja auch irgendwas hinkriegen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Öh, bitte macht euch damit nicht so einen Stress. Unity 5 hat AudioMixerGroups, die sind genau für sowas da.

Hier gibt's dazu schöne Tutorials: https://unity3d.com/...?playlist=17096

 

Du hast recht. Hab gar nicht daran gedacht. Mein Vorschlag ist bisschen oldschool. Hatte das auch vor das neue UI angewendet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für den super Tipp mit den Audio Mixern.

 

Hab es jz auch geschafft den SFX und den BGM damit zu regeln, hab nur mehr ein Problem.

 

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Audio;
using System.Collections;
public class AudioMixManager : MonoBehaviour
{
[Header("Audio Mixer")]
public AudioMixer SoundMix;
public AudioMixer MusicMix;
[Header("Toggle")]
public Toggle SoundToggle;
public Toggle MusicToggle;
public void SetSoundVolume(float setSFXVolume)
{
 if(SoundToggle.isOn == true)
  SoundMix.SetFloat ("SFXVolume", setSFXVolume);
}
public void SetMusicVolume(float setMusicVolume)
{
 if(MusicToggle.isOn == true)
  MusicMix.SetFloat ("MusicVolume", setMusicVolume);
}
public void SetSoundMute()
{
 if(SoundToggle.isOn == true)
  SoundMix.SetFloat ("SFXVolume", 0f);
 else
  SoundMix.SetFloat ("SFXVolume", -80.0f);
}
public void SetMusicMute()
{
 if(MusicToggle.isOn == true)
  MusicMix.SetFloat ("MusicVolume", 0f);
 else
  MusicMix.SetFloat ("MusicVolume", -80.0f);
}
}

 

Das ist mein Code für die Lautstärke und die Audio-Daten zu Muten.

Nur wenn man das Muten an und ausmacht geht es immer auf die höchste Lautstärke zurück und nimmt nicht den Wert der Slider an.

 

Ich schätze mal ich müsste die dynamischen float statt der 0f ersetzen bei der if anweisung in der public void SetMusicMute und SetSoundMute???

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...