Exemple #1
0
        /// <summary>
        /// 释放某通道
        /// </summary>
        /// <param name="channel">通道名称</param>
        public void unloadChannel(string channel)
        {
            ChnnelInfo ci = null;

            if (_channelAudioSouces.TryGetValue(channel, out ci))
            {
                Object.Destroy(ci._as);
                foreach (AudioClip ac in ci._clips.Values)
                {
                    Resources.UnloadAsset(ac);
                }
                _channelAudioSouces.Remove(channel);
            }
        }
Exemple #2
0
        /// <summary>
        /// 在某个通道播放声音,在这个通道下声音是独占的,如果要播放新的声音,将会使以前的声音停止
        /// </summary>
        /// <param name="soundPath">Resource/Sound下的路径</param>
        /// <param name="channel">通道名称,自定义即可,如果之前没有此通道,将新建</param>
        /// <returns>播放成功返回真,否则假,系统开关关闭也会返回假</returns>
        public bool playInChannel(string soundPath, string channel)
        {
            ChnnelInfo ci = null;
            AudioClip  ac = null;

            if (!SystemConfig.soundSwich)
            {
                return(false);
            }
            if (!_channelAudioSouces.TryGetValue(channel, out ci))
            {
                ci     = new ChnnelInfo();
                ci._as = gameObject.AddComponent <AudioSource>();
                _channelAudioSouces.Add(channel, ci);
            }
            if (ci._clips.TryGetValue(soundPath, out ac))
            {
                ci._as.clip = ac;
            }
            else
            {
                ci._as.clip = Resources.Load("Sound/" + soundPath, typeof(AudioClip)) as AudioClip;
                if (ci._as.clip == null)
                {
                    //loadAsset
                }
                if (ci._as.clip != null)
                {
                    ci._clips.Add(soundPath, ci._as.clip);
                }
            }
            if (ci._as.clip != null)
            {
                ci._as.Stop();
                ci._as.Play();
                return(true);
            }
            else
            {
                return(false);
            }
        }