Unity мой скрипт аудио менеджера не воспроизводит мой звук - PullRequest
0 голосов
/ 15 мая 2019

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

Сценарий менеджера звука:

using UnityEngine;

[System.Serializable]
public class Sound {

    public string name;
    public AudioClip clip;

    [Range (0f, 1f)]
    public float volume = 0.7f;
    [Range (0.5f, 1.5f)]
    public float pitch = 1f;

    [Range (0f, 0.5f)]
    public float randomVolume = 0.1f;
    [Range (0f, 0.5f)]
    public float randomPitch = 0.1f;
    public bool loop = false;

    private AudioSource source;

    public void SetSource (AudioSource _source) {
        source = _source;
        source.clip = clip;
        source.loop = loop;
    }

    public void Play () {
        source.volume = volume * (1 + Random.Range (-randomVolume / 2f, randomVolume / 2f));
        source.pitch = pitch * (1 + Random.Range (-randomPitch / 2f, randomPitch / 2f));
        source.Play ();
    }
    public void Stop () {
        source.Stop ();
    }
}

public class AudioManager : MonoBehaviour {
    public static AudioManager instance;

    [SerializeField]
    Sound[] sounds;

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

        }
    }

    void Start () {
        for (int i = 0; i < sounds.Length; i++) {
            GameObject _go = new GameObject ("Sound_" + i + "_" + sounds[i].name);
            _go.transform.SetParent (this.transform);
            sounds[i].SetSource (_go.AddComponent<AudioSource> ());
        }
    }

    public void PlaySound (string _name) {
        for (int i = 0; i < sounds.Length; i++) {
            if (sounds[i].name == _name) {
                sounds[i].Play ();
                return;
            }
        }

        // no sound with _name
        Debug.LogWarning ("AudioManager: Sound not found in list, " + _name);
    }
    public void StopSound (string _name) {
        for (int i = 0; i < sounds.Length; i++) {
            if (sounds[i].name == _name) {
                sounds[i].Stop ();
                return;
            }
        }

        // no sound with _name
        Debug.LogWarning ("AudioManager: Sound not found in list, " + _name);
    }
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...