Esempio n. 1
0
    public static AudioRemote PlaySound(string audioObjectName)
    {
        if (_instance == null)
        {
            _instance = new GameObject("AudioManager").AddComponent <AudioManager>();
            _instance._audioObjects = Resources.LoadAll <AudioObject>("").ToList();
        }
        if (_instance._audioObjectDictionary == null)
        {
            _instance.BuildDictionary();
        }

        if (!_instance._audioObjectDictionary.ContainsKey(audioObjectName))
        {
            Debug.LogWarning("No audio object with name: " + audioObjectName);
            return(null);
        }

        AudioObject ao     = _instance._audioObjectDictionary[audioObjectName];
        AudioSource source = Instantiate(_instance._audioSourcePrefab);

        source.clip   = ao.GetRandomClip();
        source.loop   = ao.Looping;
        source.volume = ao.Volume;
        if (ao.RandomizeStartTime)
        {
            source.time = Random.Range(0.0f, source.clip.length);
        }
        source.Play();
        if (ao.Persistant)
        {
            DontDestroyOnLoad(source.gameObject);
        }
        _instance._playingSources.Add(source);

        return(new AudioRemote(source, ao.FadeOutTime));
    }