Example #1
0
 protected override void Awake()
 {
     base.Awake();
     clickObj = actionObj as ClickObj;
     clickObj.onMouseEnter.AddListener(OnEnterClickObj);
     clickObj.onMouseExit.AddListener(OnExitClickObj);
 }
Example #2
0
    public RhythmTap CreateWord(CorePlayManager manager, ClickObj clickWord, EffectInOutTiming inOut = EffectInOutTiming.Default, int sentenceIndex = 0)
    {
        RhythmTap tap = new RhythmTap();

        tap.Start(manager, clickWord, inOut, sentenceIndex);
        return(tap);
    }
Example #3
0
    public void GetHit(int damage)
    {
        int        healsnew = Heals - damage;
        GameObject canvas   = GameObject.Find("Canvas");

        clickTextPool = Instantiate(ClickText, canvas.transform).GetComponent <ClickObj>();
        clickTextPool.StartMotion(damage);
        Destroy(clickTextPool.gameObject, 3f);

        if (healsnew <= 0)
        {
            _gameHelper.TakeCrystal(Crystal);
            Destroy(gameObject);
            Debug.Log("Destroy " + Enemy.countBoss);
            _gameHelper.SpawnEnemy();
            int num = Enemy.countBoss % Constant.whoIsBoss;
            if (num == 0)
            {
                _gameHelper.ShowBG();
            }
            Player.currentLevel       += (int)(Player.maxLevel * Constant.cofLevel);
            _gameHelper.levelBar.value = Player.currentLevel;

            randomPart = Random.Range(0, 5);
            Debug.Log(randomPart);
            GameVar.ship[randomPart] = 1;
        }
        Heals = healsnew;
        _gameHelper.helsEnemyBar.value = Heals;
        Enemy.health    = healsnew;
        Enemy.oldHealth = healsnew;
    }
Example #4
0
    public void Start(CorePlayManager manager,
                      ClickObj clickWord,
                      EffectInOutTiming inOut,
                      int sentenceIndex)
    {
        IsTutorial      = false;
        m_Manager       = manager;
        m_Clickable     = true;
        m_HitWord       = clickWord.m_Word;
        m_SentenceIndex = sentenceIndex;
        // 创建
        m_ObjectTrans = ObjectPool.GetOne("RhythmController").transform;

        // Set Transform
        Vector3 pos = clickWord.m_Position;

        pos = new Vector3(pos.x / OSU_WIDTH * ScreenWidth - HalfScreenWidth,
                          HalfScreenHeight - pos.y / OSU_HEIGHT * ScreenHeight,
                          0);

        // Set RhythmController
        contrller = m_ObjectTrans.GetComponent <RhythmController>();
        contrller.Init(this,
                       clickWord.m_Word,
                       clickWord.m_ShowWord, pos, inOut);
    }
Example #5
0
 public void SetPosition(ClickObj obj)
 {
     //TeachRhythmRenderer render = new TeachRhythmRenderer();
     //SetRenderer(render);
     //m_ObjectTrans = m_RhythmRenderer.SetTransform(Vector3.zero);
     //m_RhythmRenderer.SetPosition(obj.m_Position);
     //m_RhythmRenderer.Show();
 }
Example #6
0
    // Use this for initialization
    void Start()
    {
        Clicke   clicke   = new Clicke();
        ClickObj clickobj = new ClickObj();

        clickobj.ClickEvent += clicke.click_English;
        clickobj.testevent();
    }
Example #7
0
 void Start()
 {
     _gameHelper = GameObject.FindObjectOfType <Game>();
     _gameHelper.helsEnemyBar.maxValue = Heals;
     _gameHelper.helsEnemyBar.value    = Heals;
     clickTextPool = GameObject.FindObjectOfType <ClickObj>();
     if (Enemy.oldHealth > 0)
     {
         Heals = Enemy.oldHealth;
         Debug.Log("Health enemy = " + Heals);
     }
 }
Example #8
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                try
                {
                    ClickObj obj = hit.transform.gameObject.GetComponent <ClickObj>();
                    obj.Respawn();
                }
                catch (System.Exception)
                {
                }
            }
        }
    }
Example #9
0
    static SongObject ParseOSU(TextAsset textAsset, string fileName)
    {
        SongObject  songObj      = new SongObject();
        CollectType _collectType = CollectType.General;

        string[] contents = textAsset.text.Split('\n');
        Dictionary <string, string> result = new Dictionary <string, string> ();

        result.Add("Title:", fileName);

        List <HitObject> tmpHitObject = new List <HitObject> ();
        int  k = 0;
        bool nextSentenceAheadIn = false;
        bool streamSentenceEdit  = false;


        for (int i = 0; i < contents.Length; i++)
        {
            string oneLine = contents[i].Trim();

            //空行和注释行 不解析
            if (string.IsNullOrEmpty(oneLine) || oneLine.StartsWith("//", StringComparison.Ordinal))
            {
                continue;
            }

            if (oneLine.Contains("[HitObjects]"))
            {
                _collectType = CollectType.HitObject;
                continue;
            }
            if (oneLine.Contains("[SentenceInfo]"))
            {
                _collectType = CollectType.SentenceInfo;
                continue;
            }

            switch (_collectType)
            {
            case CollectType.General:
                for (int j = 0; j < m_Fields.Length; j++)
                {
                    if (oneLine.Contains(m_Fields[j]))
                    {
                        result.Add(m_Fields[j], oneLine.Replace(m_Fields[j], ""));
                    }
                }
                break;

            case CollectType.SentenceInfo:
                if (!streamSentenceEdit)
                {                        //
                    #region 普通句子
                    SentenceObj sentenceobjs = new SentenceObj();

                    if (oneLine.Contains("@@VoiceStart"))
                    {
                        sentenceobjs.Type = SentenceType.KeyVoiceStart;
                        string[]  stringArray   = oneLine.Split(',');
                        int       sentenceStart = int.Parse(stringArray[1]);
                        InOutTime inOut         = new InOutTime(sentenceStart, sentenceStart);
                        sentenceobjs.m_InOutTime = inOut;
                        songObj.SentenceObjs.Add(sentenceobjs);
                        _collectType = CollectType.KeyAndVoice;
                        // LogManager.Log(oneLine , "     ///  _collectType = CollectType.KeyAndVoice");
                        continue;
                    }

                    if (oneLine.Contains("@@"))
                    {
                        sentenceobjs.Type = SentenceType.BossStart;
                        string[] stringArray = oneLine.Replace("@@", "").Split(',');
                        if (stringArray.Length != 2)
                        {
                            LogManager.LogError("boss战起始时间和延迟播放音乐配置错误");
                        }
                        int       sentenceStart = int.Parse(stringArray[0]);
                        int       musicDelay    = int.Parse(stringArray[1]);
                        InOutTime inOut         = new InOutTime(sentenceStart, sentenceStart);
                        sentenceobjs.m_InOutTime  = inOut;
                        songObj.BossWarMusicDelay = musicDelay;
                        streamSentenceEdit        = true;
                        songObj.SentenceObjs.Add(sentenceobjs);
                        continue;
                    }


                    string[] parse     = oneLine.Split(',');
                    int      startTime = int.Parse(parse[0]);
                    int      endTime   = int.Parse(parse[1]);


                    if (parse[2].Contains("#"))
                    {
                        sentenceobjs.Type = SentenceType.Voice;
                        parse[2]          = parse[2].Replace("#", "");
                    }
                    else
                    {
                        sentenceobjs.Type = SentenceType.Common;
                    }

                    string[] param         = parse[2].Split('$');
                    string[] wordShow      = parse[3].Split('$');
                    string[] wordSoundFile = null;
                    if (parse.Length >= 5)
                    {
                        wordSoundFile = parse[4].Split('$');
                    }
                    for (int j = 0; j < param.Length; j++)
                    {
                        if (k >= tmpHitObject.Count)
                        {
                            LogManager.LogError("OSU文件中hitObject数目 与 txt文件中的单词数量不匹配");
                            return(null);
                        }

                        try
                        {
                            ClickObj click = new ClickObj(param[j], tmpHitObject[k].Position, wordShow[j]);
                            click.m_ClickTimes = 1;
                            sentenceobjs.ClickAndHOList.ClickObjs.Add(click);
                            tmpHitObject[k].Word = param[j];
                            if (wordSoundFile != null && wordSoundFile.Length > 0)
                            {
                                if (wordSoundFile.Length == param.Length)
                                {
                                    tmpHitObject[k].SonudFile = wordSoundFile[j];
                                }
                                else
                                {
                                    LogManager.LogError(string.Format("行 {0} 有错误:句子单词个数 与 单词语音文件数量不匹配", (i + 1)));
                                    return(null);
                                }
                            }
                            sentenceobjs.ClickAndHOList.HitObjects.Add(tmpHitObject[k]);
                            k++;
                        }
                        catch (Exception e)
                        {
                            LogManager.LogError("the wrong line is:", (i + 1).ToString());
                            LogManager.LogError(e);
                            LogManager.LogError(e.StackTrace);
                        }
                    }

                    InOutTime inOutTime = new InOutTime(startTime, endTime);
                    sentenceobjs.m_InOutTime = inOutTime;
                    //判断这一句是否应该延迟删除,下一句是否应该提前出现

                    if (endTime - sentenceobjs.ClickAndHOList.HitObjects[sentenceobjs.ClickAndHOList.HitObjects.Count - 1].StartMilliSecond < CorePlaySettings.Instance.m_MinIntervalBeforeSentenceEnd)
                    {                            //这一句延迟删除,下一句提前出现
                        if (nextSentenceAheadIn)
                        {
                            sentenceobjs.m_InOutTime.InOut = EffectInOutTiming.Both;
                        }
                        else
                        {
                            sentenceobjs.m_InOutTime.InOut = EffectInOutTiming.DelayOut;
                            nextSentenceAheadIn            = true;
                        }
                    }
                    else
                    {
                        if (nextSentenceAheadIn)
                        {
                            sentenceobjs.m_InOutTime.InOut = EffectInOutTiming.AheadIn;
                            nextSentenceAheadIn            = false;
                        }
                    }

                    songObj.SentenceObjs.Add(sentenceobjs);
                    #endregion
                }
                else
                {
                    #region boss句子
                    string[]            parse = oneLine.Split(',');
                    StreamSentenceGroup group = new StreamSentenceGroup();
                    if (parse.Length == 5 && parse[4].Equals("BB"))
                    {
                        group.CalckSentence = true;
                    }
                    else
                    {
                        group.CalckSentence = false;
                    }
                    group.SetTimeLength(int.Parse(parse[0]));
                    if (parse[1].Contains("#"))
                    {
                        group.SetSentenceType(SentenceType.Voice);
                        parse[1] = parse[1].Replace("#", "");
                    }
                    else
                    {
                        group.SetSentenceType(SentenceType.Common);
                    }
                    string[] matchSentences = parse[1].Replace("@@", "").Split('|');
                    string[] showSentences  = parse[2].Split('|');
                    string[] fileNames      = parse[3].Split('|');
                    if (matchSentences.Length != showSentences.Length || showSentences.Length != fileNames.Length)
                    {
                        LogManager.LogError("TXT文件 第 ", (i + 1).ToString(), "行报错:断句数量不匹配");
                        return(null);
                    }
                    else
                    {
                        int sentenceNumber = matchSentences.Length;
                        for (int line = 0; line < sentenceNumber; line++)
                        {
                            StreamSentence bossSentence = new StreamSentence();
                            bossSentence.SetAudioFileName(fileNames[line].ToLower());
                            string[] words     = matchSentences[line].Split('$');
                            string[] showWords = showSentences[line].Split('$');

                            if (words.Length != showWords.Length)
                            {
                                LogManager.LogError("TXT文件 第 ", (i + 1).ToString(), "行报错:单词数量不匹配 ",
                                                    words.Length.ToString(), "/" + showWords.Length.ToString());
                                return(null);
                            }
                            else
                            {
                                for (int index = 0; index < words.Length; index++)
                                {
                                    KeyValuePair <string, string> kv = new KeyValuePair <string, string> (words[index], showWords[index]);
                                    bossSentence.AddToSentence(kv);
                                }
                            }
                            group.AddSentence(bossSentence);
                        }
                    }

                    songObj.StreamSentences.Add(group);
                    #endregion
                }
                break;

            case CollectType.HitObject:
                if (oneLine.Contains("C") || oneLine.Contains("P") || oneLine.Contains("L") || oneLine.Contains("B"))
                {                        //2017年10月28日版本先不做这些功能
                    continue;
                }
                else
                {
                    string[] param = oneLine.Split(',');
                    if (param.Length != 6)
                    {
                        LogManager.LogError("data parse error: the data file is  --", fileName);
                    }
                    else
                    {
                        Vector2 pos       = new Vector2(int.Parse(param[0]), int.Parse(param[1]));
                        int     startTime = int.Parse(param[2]);
                        int     type      = int.Parse(param[3]);
                        int     soundType = int.Parse(param[4]);

                        HitObject ho = new HitObject(pos, startTime, type, soundType);

                        tmpHitObject.Add(ho);
                    }
                }
                break;

            case CollectType.KeyAndVoice:
                //LogManager.Log(oneLine , " |||||  case CollectType.KeyAndVoice:");

                string[] parses = oneLine.Split(',');
                if (parses.Length < 3)
                {
                    LogManager.LogError("TXT文件 第 ", (i + 1).ToString(), "行报错:分段不够");
                    return(null);
                }

                StreamSentence ss = new StreamSentence();
                ss.SetDuration(int.Parse(parses[0]) * 0.001f);
                if (parses[1].StartsWith("#", StringComparison.Ordinal))
                {
                    //parses[1] = parses[1].Substring(1);
                    parses[1] = parses[1].Replace("#", "");
                    //LogManager.Log ("   需要录音 = " , parses[1]);
                    ss.needRecord = true;
                    ss.SetType(SentenceType.NonRhythmVoice);
                    //if (parses[1].StartsWith ("#", StringComparison.Ordinal))
                    //{
                    //	parses[1] = parses[1].Substring (1);
                    //	ss.needRecord = true;
                    //}
                }
                else
                {
                    ss.SetType(SentenceType.NonRhythmCommon);
                }

                if (parses.Length == 4)
                {
                    string[] tempAudios = parses[3].Split('|');
                    if (string.IsNullOrEmpty(tempAudios[0]) == false)
                    {
                        ss.SetAudioFileName(tempAudios[0].ToLower());
                    }
                    if (tempAudios.Length == 2 && string.IsNullOrEmpty(tempAudios[1]) == false)
                    {
                        ss.Speaker = tempAudios[1];
                    }
                    //ss.SetAudioFileName(parses[3]);
                }

                string[] firstWords = parses[1].Split('$');
                string[] clickWords = parses[2].Split('$');

                if (firstWords.Length != clickWords.Length)
                {
                    LogManager.LogError("TXT文件 第 ", (i + 1).ToString(), "行报错:单词数量不匹配");
                    return(null);
                }
                else
                {
                    for (int index = 0; index < firstWords.Length; index++)
                    {
                        KeyValuePair <string, string> kv = new KeyValuePair <string, string> (firstWords[index], clickWords[index]);
                        ss.AddToSentence(kv);
                        //ClickObj click = new ClickObj(kv.Key, tmpHitObject[k].Position, kv.Value);
                        //ClickObj click = new ClickObj(kv.Key, Vector2.zero, kv.Value);
                        //click.m_ClickTimes = 1;
                        //ss.ClickAndHOList.ClickObjs.Add(click);
                        //tmpHitObject[k].Word = kv.Key;
                        //ss.ClickAndHOList.HitObjects.Add(tmpHitObject[k]);
                        //k++;
                    }
                }
                songObj.NonRhythmSenteces.Add(ss);
                break;
            }
        }

        songObj.SetContents(result);

        return(songObj);
    }
Example #10
0
 void Awake()
 {
     clickObj = GetComponent <ClickObj>();
 }
    private void ProcessEvents(CorePlayTimerEvent te)
    {
        switch (te.m_Type)
        {
        case CorePlayTimerEvent.EventType.CreateTapSentence:
            //Debug.Log("CreateTapSentence = " + te.m_Timer + " / time = " + Time.time);
            m_TapCreator.CreateWords(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex], te.m_SentenceIndex);
            break;

        case CorePlayTimerEvent.EventType.CreateVoiceSentence:
            m_VoiceCreator.CreateWords(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex], te.m_SentenceIndex);
            //Debug.Log(" 0 = 普通模式 开始录音" + "  / " + Time.frameCount);
            StartMicRecord();
            break;

        case CorePlayTimerEvent.EventType.EndVoiceChecker:
            Debug.Log(" 1 = 普通模式 结束录音");
            StopMicRecord();
            break;

        case CorePlayTimerEvent.EventType.EndVoiceUI:
            m_VoiceCreator.BGFadeOut();
            if (m_StartAutoPlay)
            {
                m_AutoPlay.Show();
            }
            break;

        case CorePlayTimerEvent.EventType.HighLightTap:
            string word = CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects[te.m_HOIndex].Word.ToLower();
            m_TapCreator.HighLightWord(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects, te.m_HOIndex, te.m_HighLightTime);
            m_InputCheck.SetCurHOIndex(te.m_SentenceIndex, te.m_HOIndex);
            if (m_StartAutoPlay)
            {
                ClickObj co = CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.ClickObjs[te.m_HOIndex];
                m_AutoPlay.Simulate(CorePlaySettings.Instance.m_PreShowTimeLength * RuntimeConst.MSToSecond, co.m_Position);
            }
            StartCoroutine(HOPointTimeLogic(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects[te.m_HOIndex]));
            break;

        case CorePlayTimerEvent.EventType.HighLightVoice:
            m_VoiceCreator.HighLightWord(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects, te.m_HOIndex);
            break;

        case CorePlayTimerEvent.EventType.StartCount:
            CorePlayIntrada intrada = new CorePlayIntrada(CorePlayData.BMPDelta, () => { m_IntradaStatus = IntradaStatus.Played; });
            intrada.Show();
            m_IntradaStatus = IntradaStatus.Playing;
            break;

        case CorePlayTimerEvent.EventType.StartPlayMusic:
            StartCurrentSong();
            break;

        case CorePlayTimerEvent.EventType.StartTapChecker:
            // Temp Event
            CorePlaySceneManager.checkSentenceEvent.Invoke();
            int sentenceLength = CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].m_InOutTime.EndTime -
                                 CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].m_InOutTime.StartTime;
            int timeLength = sentenceLength +
                             CorePlaySettings.Instance.m_PreShowTimeLength;
            m_InputCheck.CreateCheckSentenceWithMS(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects, te.m_SentenceIndex, sentenceLength);
            float duration = timeLength * 0.001f;
            StartCoroutine(SentenceCheck(te.m_SentenceIndex, duration));
            break;

        case CorePlayTimerEvent.EventType.StartVoiceChecker:
            CreateVoiceCheck(te.m_SentenceIndex);
            break;

        case CorePlayTimerEvent.EventType.StartVoiceUI:
            m_VoiceCreator.BGFadeIn();
            if (m_StartAutoPlay)
            {
                m_AutoPlay.Close();
            }
            break;

        case CorePlayTimerEvent.EventType.StartBoss:
            StartBossWarLogic();
            break;

        case CorePlayTimerEvent.EventType.StartKeyVoice:
            StartKeyAndVoice();
            break;
        }
    }
Example #12
0
    private void Update()
    {
        if (Pause == false)
        {
            if (m_Status == TutorialStatus.ErJi)
            {
                m_Status = TutorialStatus.Nothing;
                m_Erji.SetActive(true);
                AudioObject audioObj = null;
                if (LanguageManager.languageType == LanguageType.Chinese)
                {
                    audioObj = AudioController.Play("Recording_erji");
                }
                else
                {
                    audioObj = AudioController.Play("en_Recording1");
                }
                audioObj.completelyPlayedDelegate = EndErji;
            }

            else if (m_Status == TutorialStatus.StartPlayMusic)
            {
                m_Status = TutorialStatus.Nothing;
                ClickObj co = null;
                if (LanguageManager.languageType == LanguageType.Chinese)
                {
                    co = new ClickObj("Hello", new Vector2(256, 192), "Hello");
                }
                else
                {
                    co = new ClickObj("你好", new Vector2(256, 192), "你好");
                }

                obj_hand.SetActive(false);
                m_Tap            = CorePlayManager.Instance.m_TapCreator.CreateWord(null, co);
                m_Tap.IsTutorial = true;
                m_Tap.TutNum(1);
                m_TapController = m_Tap.contrller;
                m_Zhuyi.SetActive(true);
                AudioObject audioObj = null;
                if (LanguageManager.languageType == LanguageType.Chinese)
                {
                    audioObj = AudioController.Play("Recording_1");
                }
                else
                {
                    audioObj = AudioController.Play("en_Recording2");
                }
                audioObj.completelyPlayedDelegate = ChangeStatusToPlayBatchKey;
            }
            else if (m_Status == TutorialStatus.PlayBatchKey)
            {
                BPM          = 60;
                m_Beat       = 60000f / BPM;
                m_Status     = TutorialStatus.ClickBatchKey;
                m_PlayStatus = Status.Sound;
                RhyTapHight();
            }
            else if (m_Status == TutorialStatus.RetryPlayBatchKey)
            {
                BPM          = 60;
                m_Beat       = 60000f / BPM;
                m_Status     = TutorialStatus.ClickBatchKey;
                m_PlayStatus = Status.Sound;
                m_Zhuyi.SetActive(true);

                AudioObject audioObj = null;
                if (LanguageManager.languageType == LanguageType.Chinese)
                {
                    audioObj = AudioController.Play("Recording_6");
                }
                else
                {
                    audioObj = AudioController.Play("en_Recording2");
                }
                audioObj.completelyPlayedDelegate = RepetClick;
            }
            else if (m_Status == TutorialStatus.StartSound)
            {
                m_Status = TutorialStatus.Nothing;
                AudioObject audioObj = null;
                if (LanguageManager.languageType == LanguageType.Chinese)
                {
                    audioObj = AudioController.Play("Recording_2");
                }
                else
                {
                    audioObj = AudioController.Play("en_Recording5");
                }
                audioObj.completelyPlayedDelegate = StartPlaySound;
            }
            else if (m_Status == TutorialStatus.PlaySound)
            {
                RepetNum += 1;
                m_Status  = TutorialStatus.Nothing;
                FlyWord();
            }
            else if (m_Status == TutorialStatus.RetryPlaySound)
            {
                RepetNum += 1;
                m_Status  = TutorialStatus.Nothing;
                List <string> wordList = new List <string>();

                if (LanguageManager.languageType == LanguageType.Chinese)
                {
                    wordList.Add("Recording_7");
                }
                else
                {
                    wordList.Add("en_Recording6");
                }

                var audioObj = AudioController.PlayList(wordList);
                audioObj.completelyPlayedDelegate = FlyWord;
            }
            else if (m_Status == TutorialStatus.CheckSound)
            {
                m_Timer += Time.deltaTime * 1000f;
                if (m_Timer >= 5000f)
                {
                    if (RepetNum < 2)
                    {
                        XunFeiSRManager.Instance.StopListen();
                        MicManager.Instance.StopRecord();
                        m_Status = TutorialStatus.RetryPlaySound;
                    }
                    else
                    {
                        m_Status = TutorialStatus.Nothing;
                        XunFeiSRManager.Instance.StopListen();
                        MicManager.Instance.StopRecord();
                        AudioObject audioObj = null;
                        if (LanguageManager.languageType == LanguageType.Chinese)
                        {
                            audioObj = AudioController.Play("Recording_5");
                        }
                        else
                        {
                            audioObj = AudioController.Play("en_Recording3");
                        }
                        AnalysisManager.Instance.OnEvent("100005", null, "新手", "完成新手");
                        audioObj.completelyPlayedDelegate = Skip;
                    }
                }
            }
        }
    }