Моя тематическая песня не запускается и зацикливается правильно - PullRequest
1 голос
/ 07 июня 2019

Я делаю видеоигру в Unity и хочу сыграть вступление AudioSource Intro при запуске игры, а затем зациклить основную тему уровня.

Это работает, но проблема в том, что яУ меня есть то, что при завершении вступления наступает тишина в 1 секунду, и он начинает воспроизводить тему.Это молчание также появляется, когда тема заканчивается и зацикливается, что создает ощущение, что игра останавливается на секунду.

public class audioTheme : MonoBehaviour
{

    public AudioSource Intro;
    private bool startedLoop;

    void Start()
    {
        Intro = GetComponent<AudioSource>();
        Intro.Play();
    }

    void FixedUpdate()
    {
        if (!Intro.isPlaying && !startedLoop)
        {
            FindObjectOfType<AudioManager>().Play("theme");
            startedLoop = true;
        }
    }
}

У меня также есть скрипт «AudioManager», который содержит массив аудио, например, прыжокЗвуковые эффекты, монеты и основная тема.Это позволяет мне использовать любой звук, используя выражение FindObjectOfType <AudioManager> (). Play (" soundName ");

public class AudioManager : MonoBehaviour
{
    public Sound[] sounds;

    void Awake()
    {    
        foreach (Sound s in sounds)
        {
            s.source = gameObject.AddComponent<AudioSource>();
            s.source.clip = s.clip;
            s.source.volume = s.volume;
            s.source.loop = s.loop;
            s.source.pitch = s.pitch;
        }        
    }

    public void Play(string name)
    {
        Sound s = Array.Find(sounds, sound => sound.name == name);
        s.source.Play();
    }
}

1 Ответ

0 голосов
/ 07 июня 2019

Наиболее распространенная причина такого поведения - использование формата mp3 для музыки вместо wav.Mp3 имеют короткое молчание спереди и не могут быть использованы для зацикливания.Используйте mp3 для коротких звуков и wav для зацикленных звуков и музыки.Также вы можете проверить следующий ответ .

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