Exemplo n.º 1
0
 /// <summary>
 /// 时间到做一些事情
 /// </summary>
 /// <param name="deltime">延时时间</param>
 /// <param name="spacetime">几秒检测一次</param>
 /// <param name="func">指定的时间要做什么</param>
 /// <param name="aciton">时间到要做什么</param>
 /// <returns></returns>
 public IEnumerator TimeFun(float deltime, float spacetime, MyFuncPerSecond func = null, Action aciton = null)
 {
     while (deltime >= 0)
     {
         if (func != null)
         {
             if (func(ref deltime))
             {
                 yield break;
             }
         }
         if (deltime > 0)
         {
             yield return(new WaitForSeconds(spacetime));
         }
         deltime -= spacetime;
     }
     if (aciton != null)//
     {
         aciton();
     }
 }
Exemplo n.º 2
0
    IEnumerator WinPlay(CatchTy cat)
    {
        SDKManager.Instance.gameStatus.SetGameNumber(time_ci - 1);
        if (cat == CatchTy.Catch)
        {
            MyFuncPerSecond func = null;
            #region  异物
            if (!SDKManager.Instance.isTabke())//出口有异物
            {
                UIManager.Instance.ShowUI(UIPromptPage.NAME, true, CatchTy.HasBoy);
                List <ExcelTableEntity> etable = SDKManager.Instance.GetVoiceForType(VoiceType.Special);
                func = (ref float t) =>
                {
                    if (t == 20 && !SDKManager.Instance.isTakeAway)
                    {
                        SDKManager.Instance.Speak(etable[1].TimeContent);//播放音效
                    }
                    if (t == 0)
                    {
                        t = 21;
                    }
                    return(SDKManager.Instance.isTakeAway);
                };
                yield return(SDKManager.Instance.TimeFun(20, 1, func));
            }
            #endregion

            #region 胜利等待取走礼物
            succNum++;
            SDKManager.Instance.gameStatus.SetIsCatch(true);
            SDKManager.Instance.RecordTimes(succNum, true);
            UIManager.Instance.ShowUI(UIPromptPage.NAME, true, CatchTy.Catch);
            SDKManager.Instance.AutoSendPresent();                                       //自动出礼物
            CommTool.SaveIntData(CatchTimes.Catch.ToString());
            AudioManager.Instance.PlayByName(AudioType.Fixed, AudioNams.shengli, false); //播放胜利音效
            SDKManager.Instance.WonDoll(true);                                           //摆动翅膀闪光带
            EffectMrg.ShowEffect();                                                      //播放特效
            SDKManager.Instance.Speak(elist[0].WinningContent);
            int winTime  = Convert.ToInt32(elist[0].WinTime);
            int winafter = Convert.ToInt32(elist[0].WinningAfterTime) + 2;//时间间隔两秒
            yield return(SDKManager.Instance.TimeFun(winTime, winTime));

            func = null;
            func = (ref float t) =>
            {
                if (SDKManager.Instance.isTakeAway)//已取走
                {
                    Debug.Log("已取走");
                    EffectMrg.StopPlayEffect();
                    SDKManager.Instance.WonDoll(false);
                    UIManager.Instance.ShowUI(UIPromptPage.NAME, false);
                    return(true);
                }
                if (t == 0)
                {
                    SDKManager.Instance.Speak(elist[0].WinningAfter);//播放音效
                    t = winafter;
                }
                return(false);
            };
            yield return(SDKManager.Instance.TimeFun(winafter, 1, func));

            #endregion
        }
        else
        {
            SDKManager.Instance.RecordTimes(succNum, false);
            UIManager.Instance.ShowUI(UIPromptPage.NAME, true, cat);//失败显示
            AudioManager.Instance.PlayByName(AudioType.Fixed, AudioNams.shibai, false);
            string[] contents;
            if (cat == CatchTy.NoCatch)
            {
                contents = elist[0].FailContent.Split('|');
            }
            else
            {
                contents = elist[0].FialContentDrop.Split('|');
            }
            int index = UnityEngine.Random.Range(0, contents.Length);
            SDKManager.Instance.Speak(contents[index]);//随机语音
            int delytime = Convert.ToInt32(elist[0].FailTime);
            if (time_ci > 0)
            {
                SDKManager.Instance.Light(false, 5000);
            }
            else
            {
                SDKManager.Instance.Light(false, (delytime - 1) * 1000);
            }
            yield return(new WaitForSeconds(delytime));

            UIManager.Instance.ShowUI(UIPromptPage.NAME, false);
        }
        RestStart();
    }