/// <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); } }
/// <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); } }