Есть Скрипт_1 - SoundManager.cs, в нем содержится:
public IEnumerator playAudio() {
SoundSourceCallAnimal.Play(); // AudioSOurce
yield return new WaitForSeconds(SoundSourceCallAnimal.clip.length);
//Здесь должен выполняться метод из другого скрипта
}
Скрипт_2:
public void AcceptCameAnimal() {
StartCoroutine (SoundManager.Instance.playAudio ("Сюда я должен передать некий метод с параметром int - SwitchVoiceAnimal (randomAnimalShow)"));
}
private void SwitchVoiceAnimal(int rand)
{
switch (rand)
{
case 0: Debug.Log ("Tiger"); SoundManager.Instance.PlayAnimal(rand); break;
case 1: Debug.Log ("Sheep"); SoundManager.Instance.PlayAnimal(rand); break;
case 2: Debug.Log ("Pig"); SoundManager.Instance.PlayAnimal(rand); break;
case 3: Debug.Log ("Monkey"); SoundManager.Instance.PlayAnimal(rand); break;
case 4: Debug.Log ("Elephant"); SoundManager.Instance.PlayAnimal(rand); break;
case 5: Debug.Log ("Dog"); SoundManager.Instance.PlayAnimal(rand); break;
case 6: Debug.Log ("Cow"); SoundManager.Instance.PlayAnimal(rand); break;
case 7: Debug.Log ("Chicken"); SoundManager.Instance.PlayAnimal(rand); break;
case 8: Debug.Log ("Cat"); SoundManager.Instance.PlayAnimal(rand); break;
}
}
Объясните пожалуйста как такое грамотно реализовывают
Вообще конечно сомнительная затея хотя бы потому что метод playAudio
одновременно и является итератором и при этом выполняет какие-то побочные действия, что само по себе выглядит странно, и на мой взгляд это довольно грязный код. Но если очень уж хочется, то в C# есть делегаты, в частности Action
:
public IEnumerator playAudio(Action<int> act)
{
SoundSourceCallAnimal.Play(); // AudioSOurce
yield return new WaitForSeconds(SoundSourceCallAnimal.clip.length);
if(act != null)
act(10); // вместо 10 можете подставить любое значение типа int
}
//...
public void AcceptCameAnimal()
{
StartCoroutine (SoundManager.Instance.playAudio(SwitchVoiceAnimal);
}
Однако же на вашем месте я бы пересмотрел логику метода playAudio
При запуске игры, через 20 секунд включается панель, и вызывается метод, в этом методе запускается музыкаПроблема: после запуска метода, музыка...
Появились некоторые вопросы касательно реализацию IDisposable по шаблону, который предлагает Микрософт, где еще задействован финализатор
Не работает SQL запрос с BETWEENНеобходимо создавать отчет с данными о пациентах за период времени, заданный пользователем
Хочу начать учить Ангуляр, вот только много видеоуроков на ютубе уже устарели, ангуляров уже 5 вроде, а во всяких ответах на Тостере пишут,...