Как изменить источник AudioMixer во время выполнения в Unity - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь создать музыкальное приложение.

Я бы хотел иметь возможность переключаться в AudioMixer между различными звуковыми группами, используя один и тот же GameObject.

Можно ли изменитьисточник PianoMixer с другим скриптом во время выполнения?

public class PianoAudioManager : MonoBehaviour{

public PianoSound[] PianoSounds;
public static PianoAudioManager instance;
public AudioMixerGroup PianoMixer; 

void Awake()
{
    if (instance == null)
        instance = this;
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);

    foreach(PianoSound s in PianoSounds)
    {
        s.source = gameObject.AddComponent<AudioSource>();
        s.source.outputAudioMixerGroup = PianoMixer;
        s.source.clip = s.clip;

        s.source.volume = s.volume;
        s.source.pitch = s.pitch;
    }

}    

}

Я пробовал что-то подобное, но я всегда получаю ошибки

public class Octaves : MonoBehaviour
{

public GameObject PianoAudioManager;

public void OctaveDown()
{

    AudioMixer audioMixer = Resources.Load<AudioMixer>("Scales/Sounds");

    AudioMixerGroup[] audioMixGroup = audioMixer.FindMatchingGroups("Master/PianoDown");

    PianoAudioManager.outputAudioMixerGroup = audioMixGroup[0];
}

}

Буду очень признателенза любую помощь, большое спасибо.

1 Ответ

0 голосов
/ 21 мая 2019

Я наконец-то получил ответ.Щелкните правой кнопкой мыши на имени параметра «Pitch» и выберите «Expose 'Pitch' to script».

using UnityEngine.Audio;

public class Octavas : MonoBehaviour
{

public GameObject PianoAudioManager;


public void OctaveDown()
{
    AudioMixer audioMixer = Resources.Load<AudioMixer>("Scales/Sounds");
    audioMixer.SetFloat("PianoPitch", 0.5f);
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...