//	// 玩家配置
//	protected UserPreferenceProxy userPreferenceProxy;
//	protected virtual UserPreferenceProxy TheUserPreferenceProxy
//	{
//		get{
//			if(userPreferenceProxy==null)
//			{
//				userPreferenceProxy = ApplicationFacade.RetrieveProxy (UserPreferenceProxy.defaultProxyName) as UserPreferenceProxy;
//			}
//			return userPreferenceProxy;
//		}
//	}

    // Use this for initialization
    void Awake()
    {
        SingletonMonoBehaviour <AudioController> .DestroyExtraObjects(gameObject);

        // 启动时 创建背景音乐的声源
        if (BGMSource == null)
        {
            var bgmObj = Instantiate(PredefinedAudioObject);

            bgmObj.transform.parent = transform;

            BGMSource = bgmObj.GetComponent <TDAudioSource> ();
        }
    }
    public void PlayMusic(MusicEnum music, bool loop = true)
    {
        if (!EnableSound)
        {
            return;
        }

        if (BGMSource == null)
        {
            var bgmObj = Instantiate(PredefinedAudioObject);
//			GameObject.DontDestroyOnLoad (bgmObj);

            bgmObj.transform.parent = transform;

            BGMSource = bgmObj.GetComponent <TDAudioSource> ();
        }

        if (BGMSource != null)
        {
            BGMSource.MusicId = music;
            BGMSource.Play(loop?1:0);
        }
    }
    // 查找空闲的声源
    // TODO: 现在声源根据播放的声音进行分组缓存,是否可以考虑不根据声音分组,而是共用一个缓存池
    private TDAudioSource getFreeSoundSource(SoundEnum soundId)
    {
        if (!soundSources.ContainsKey(soundId))
        {
            soundSources.Add(soundId, new List <TDAudioSource> ());
        }

        List <TDAudioSource> audioSourceList = null;

        soundSources.TryGetValue(soundId, out audioSourceList);

        // 查找空闲声源
        TDAudioSource audio = null;

        foreach (var _audio in audioSourceList)
        {
            if (!_audio.IsPlaying)
            {
                audio = _audio;
                break;
            }
        }

        if (audio == null)
        {
            // 如果没找到空闲,则添加一个新的
            var audioObject = Instantiate(PredefinedAudioObject);
            audioObject.transform.parent = transform;
            audio = audioObject.GetComponent <TDAudioSource> ();

            audio.SoundId = soundId;

            audioSourceList.Add(audio);
        }

        return(audio);
    }