public static int PlaySound(AudioSourceInfo info)
    {
        if (!isInit && info == null || info.Clip == null)
        {
            return(NULL_ID);
        }
        AudioSourceData asd;

        if (!ASDFree.TryGet(out asd))
        {
            //CheckElements need
            return(NULL_ID);
        }
        InitAudioSourceData(asd, info);
        asd.pool   = ASDFree;
        asd.IsPool = true;
        //asd.IsMusic = info.IsMusic;
        //ActiveIDs.Add(maxID);
        //countIDs++;
        //Debug.LogError("GetInstanceID=" + asd.AS.GetInstanceID());
        ActiveElements.Add(asd);
        //if (asd.GO.name == "RUS_M1_D1_S1") Debug.Log("YES");
        asd.AS.Play(0);
        if (CheckPause(asd.UnscaleTime))
        {
            asd.AS.Pause();
        }
        //if (!asd.UnscaleTime && (paused || deepPaused)) asd.AS.Pause();
        return(asd.ID);
    }
    void InitStatic()
    {
        //Debug.Log("InitStatic");
        ActiveElements     = new List <AudioSourceData>(DefaultCapacity);
        registeredElements = new List <AudioSourceData>(DefaultCapacity);
        //listInActiveElems = new List<OptimisePoolNode>(DefaultCapacity);
        Transform par = transform;

#if UNITY_EDITOR
        //GameObject go = new GameObject("ROOT_AUDIO");
        //if (go != null) par = go.transform;
#endif
        ASDFree = new ObjectsPool <AudioSourceData>(new FactorySource(par).CreateElement, DefaultCapacity);
        ASDFree.TryGet(out musicAS);
        musicAS.AS.ignoreListenerVolume = true;
        musicAS.AS.spatialBlend         = 0f;
        maxID  = NULL_ID;
        paused = deepPaused = false;
        isInit = true;
    }