Эх сурвалжийг харах

提交剧情动画的部分代码

leiyasi 1 жил өмнө
parent
commit
bcb3a42e9a

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Assets/PrefabManager.cs

@@ -65,7 +65,7 @@ namespace GFGGame
 
         public GameObject InstantiateSync(string resPath)
         {
-             AssetOperationHandle handle = YooAssets.LoadAssetSync<GameObject>(resPath);
+            AssetOperationHandle handle = YooAssets.LoadAssetSync<GameObject>(resPath);
             GameObject gameObject = handle.InstantiateSync();
             AssetReleaserHelper.AddReleaserToInstantiateObj(gameObject, resPath, handle);
             return gameObject;

+ 3 - 2
GameClient/Assets/Game/HotUpdate/Views/FieldGuide/CardGuideView.cs

@@ -87,14 +87,15 @@ namespace GFGGame
             CardData data = CardDataManager.GetCardDataById(_cardList[index]);
             UI_ListCardItem listItem = UI_ListCardItem.Proxy(obj);
             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_cardList[index]);
+            listItem.m_showType.selectedIndex = 1;
 
-            // Have
+            // Have card
             if (data != null)
             {
                 listItem.m_unlockMask.visible = false;
                 listItem.m_comCard.m_loaCard.url = ResPathUtil.GetCardIconPath(data.resources[data.resIndex]);
                 int starLevelDodge = data.star / 5;
-                listItem.m_showType.selectedIndex = 1;
+                
                 listItem.m_txtLv.visible = false;
                 for (int i = 0; i < 4; i++)
                 {

+ 140 - 103
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryDialogView.cs

@@ -407,6 +407,12 @@ namespace GFGGame
             _ui.m_list.visible = false;
         }
 
+        //private int num = 0;
+        /// <summary>
+        /// 初始化对话框/语音/CG等
+        /// </summary>
+        /// <param name="storyDialogCfg"></param>
+        /// <returns></returns>
         private IEnumerator ShowDialog(StoryDialogCfg storyDialogCfg)
         {
             if (storyDialogCfg.showChangeName == 1 && StorageDataManager.Instance.GetStorageValue(ConstStorageId.CHANGE_NAME) == 0)
@@ -432,139 +438,154 @@ namespace GFGGame
             string roleName = storyDialogCfg.name;
             string headRes = storyDialogCfg.head;
             string headAniRes = storyDialogCfg.headAni;
+            string[] effectInfo = storyDialogCfg.effectInfoArr;
 
             VoiceManager.Instance.StopVoice();
             // 如果配置了语音,读取语音
             VoiceManager.Instance.LoadRes(ResPathUtil.GetCardSoundPath("test", "wav"));
+            _wordList = Regex.Split(words, "&&");
 
-            if (roleName == "self")
+            //++num;
+            // 没有对话
+            if (_wordList.Length == 0)
+            //if (num == 1)
             {
-                roleName = RoleDataManager.roleName;
+                // 等待CG播放完毕直接进入下一段
+                //Timers.inst.StartCoroutine(WaitCGAnimFinish());
             }
-            //回顾
-            if (roleName != null)
-            {
-                _dialogListLookBack.Add("[color=#FDA2B1]" + roleName + "[/color]");
-            }
-            if (!string.IsNullOrEmpty(headAniRes) || storyDialogCfg.suitId > 0)
+            // 有对话
+            else
             {
-                //显示对话框半身像
-                _ui.m_dialogHead.target.visible = true;
-                _ui.m_dialogHead.m_txtName.text = roleName;
-                _ui.m_dialogHead.m_comphead.m_head.visible = false;
-                _ui.m_dialogHead.m_comphead.m_holder.visible = true;
-
-                var headAniCfg = HeadAniCfgArray.Instance.GetCfg(headAniRes);
-                if (headAniCfg != null && !string.IsNullOrEmpty(headAniCfg.headAni))
+                if (roleName == "self")
                 {
-                    //独立动画
-                    _ui.m_dialogHead.m_compDressUp.target.visible = false;
-                    _ui.m_dialogHead.m_comphead.target.visible = true;
-                    _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_dialogHead.m_comphead.m_holder, "ui_nzbq", headAniCfg.headAni);
+                    roleName = RoleDataManager.roleName;
                 }
-                else
+                //回顾
+                if (roleName != null)
+                {
+                    _dialogListLookBack.Add("[color=#FDA2B1]" + roleName + "[/color]");
+                }
+                if (!string.IsNullOrEmpty(headAniRes) || storyDialogCfg.suitId > 0)
                 {
-                    //换装
-                    _ui.m_dialogHead.m_compDressUp.target.visible = true;
-                    _ui.m_dialogHead.m_comphead.target.visible = false;
-                    _dressUpObjUI.ResetSceneObj(80, true, false, null, false);
-                    if (storyDialogCfg.suitId > 0)
+                    //显示对话框半身像
+                    _ui.m_dialogHead.target.visible = true;
+                    _ui.m_dialogHead.m_txtName.text = roleName;
+                    _ui.m_dialogHead.m_comphead.m_head.visible = false;
+                    _ui.m_dialogHead.m_comphead.m_holder.visible = true;
+
+                    var headAniCfg = HeadAniCfgArray.Instance.GetCfg(headAniRes);
+                    if (headAniCfg != null && !string.IsNullOrEmpty(headAniCfg.headAni))
                     {
-                        _dressUpObjUI.dressUpObj.PutOnSuitCfg(storyDialogCfg.suitId, false, new int[] { ConstDressUpItemType.SHOU_CHI_WU }, false, false);
+                        //独立动画
+                        _ui.m_dialogHead.m_compDressUp.target.visible = false;
+                        _ui.m_dialogHead.m_comphead.target.visible = true;
+                        _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_dialogHead.m_comphead.m_holder, "ui_nzbq", headAniCfg.headAni);
                     }
                     else
                     {
-                        _dressUpObjUI.dressUpObj.PutOnDressUpData(CustomSuitDataManager.GetCurrentSuitData().dressUpData, new int[] { ConstDressUpItemType.SHOU_CHI_WU });
-                        if (_dressUpObjUI.dressUpObj.actionId > 0)
+                        //换装
+                        _ui.m_dialogHead.m_compDressUp.target.visible = true;
+                        _ui.m_dialogHead.m_comphead.target.visible = false;
+                        _dressUpObjUI.ResetSceneObj(80, true, false, null, false);
+                        if (storyDialogCfg.suitId > 0)
                         {
-                            _dressUpObjUI.dressUpObj.CancelAction(true, new int[] { ConstDressUpItemType.SHOU_CHI_WU });
+                            _dressUpObjUI.dressUpObj.PutOnSuitCfg(storyDialogCfg.suitId, false, new int[] { ConstDressUpItemType.SHOU_CHI_WU }, false, false);
+                        }
+                        else
+                        {
+                            _dressUpObjUI.dressUpObj.PutOnDressUpData(CustomSuitDataManager.GetCurrentSuitData().dressUpData, new int[] { ConstDressUpItemType.SHOU_CHI_WU });
+                            if (_dressUpObjUI.dressUpObj.actionId > 0)
+                            {
+                                _dressUpObjUI.dressUpObj.CancelAction(true, new int[] { ConstDressUpItemType.SHOU_CHI_WU });
+                            }
+                        }
+                        if (headAniCfg != null && headAniCfg.faceId > 0)
+                        {
+                            //表情
+                            _dressUpObjUI.dressUpObj.AddOrRemove(headAniCfg.faceId, true);
+                            _dressUpObjUI.UpdateWrapper(_ui.m_dialogHead.m_compDressUp.m_holder);
                         }
                     }
-                    if (headAniCfg != null && headAniCfg.faceId > 0)
-                    {
-                        //表情
-                        _dressUpObjUI.dressUpObj.AddOrRemove(headAniCfg.faceId, true);
-                        _dressUpObjUI.UpdateWrapper(_ui.m_dialogHead.m_compDressUp.m_holder);
-                    }
+                    _wordTextField = _ui.m_dialogHead.m_txtContent;
+                    _arrow = _ui.m_dialogHead.m_iconNext;
+                    lastTextFieldType = "head";
                 }
-                _wordTextField = _ui.m_dialogHead.m_txtContent;
-                _arrow = _ui.m_dialogHead.m_iconNext;
-                lastTextFieldType = "head";
-            }
-            else if (!string.IsNullOrEmpty(headRes))
-            {
-                _ui.m_dialogHead.target.visible = true;
-                _ui.m_dialogHead.m_txtName.text = roleName;
-                _ui.m_dialogHead.m_comphead.m_head.visible = true;
-                _ui.m_dialogHead.m_comphead.m_holder.visible = false;
-
-                _ui.m_dialogHead.m_comphead.m_head.url = ResPathUtil.GetNpcHeadPath(headRes);
-                _wordTextField = _ui.m_dialogHead.m_txtContent;
-                _arrow = _ui.m_dialogHead.m_iconNext;
-                lastTextFieldType = "head";
-            }
-            else if (!string.IsNullOrEmpty(roleName))
-            {
-                _ui.m_dialogName.target.visible = true;
-                if (IsTeaParty)
+                else if (!string.IsNullOrEmpty(headRes))
                 {
-                    var roleContainerList = LeagueDataManager.Instance.RoleContainerList;
-                    var teapartyRoleCfg = TeapartyRoleCfgArray.Instance.GetCfgsByid(LeagueDataManager.Instance.TeaPartyId);
-                    int roleIndex = Convert.ToInt32(roleName);
-                    _ui.m_dialogName.m_txtName.text = teapartyRoleCfg[roleIndex - 1].name;
-                    _ui.m_dialogName.m_bgType.selectedIndex = 1;
-                    _ui.m_dialogName.m_showArrow.selectedIndex = 1;
-                    
-                    if (roleIndex <= roleContainerList.Count && roleContainerList[roleIndex - 1].MaxScoreRoleName != null && roleContainerList[roleIndex - 1].MaxScoreRoleName != "" && _ui.m_dialogName.m_txtName.text != "")
+                    _ui.m_dialogHead.target.visible = true;
+                    _ui.m_dialogHead.m_txtName.text = roleName;
+                    _ui.m_dialogHead.m_comphead.m_head.visible = true;
+                    _ui.m_dialogHead.m_comphead.m_holder.visible = false;
+
+                    _ui.m_dialogHead.m_comphead.m_head.url = ResPathUtil.GetNpcHeadPath(headRes);
+                    _wordTextField = _ui.m_dialogHead.m_txtContent;
+                    _arrow = _ui.m_dialogHead.m_iconNext;
+                    lastTextFieldType = "head";
+                }
+                else if (!string.IsNullOrEmpty(roleName))
+                {
+                    _ui.m_dialogName.target.visible = true;
+                    if (IsTeaParty)
                     {
-                        _ui.m_comPlayName.visible = true;
-                        _ui.m_txtPlayName.text = roleContainerList[roleIndex - 1].MaxScoreRoleName;
+                        var roleContainerList = LeagueDataManager.Instance.RoleContainerList;
+                        var teapartyRoleCfg = TeapartyRoleCfgArray.Instance.GetCfgsByid(LeagueDataManager.Instance.TeaPartyId);
+                        int roleIndex = Convert.ToInt32(roleName);
+                        _ui.m_dialogName.m_txtName.text = teapartyRoleCfg[roleIndex - 1].name;
+                        _ui.m_dialogName.m_bgType.selectedIndex = 1;
+                        _ui.m_dialogName.m_showArrow.selectedIndex = 1;
+
+                        if (roleIndex <= roleContainerList.Count && roleContainerList[roleIndex - 1].MaxScoreRoleName != null && roleContainerList[roleIndex - 1].MaxScoreRoleName != "" && _ui.m_dialogName.m_txtName.text != "")
+                        {
+                            _ui.m_comPlayName.visible = true;
+                            _ui.m_txtPlayName.text = roleContainerList[roleIndex - 1].MaxScoreRoleName;
 
-                        if (_ui.m_txtPlayName.text == RoleDataManager.roleName)
-                            _ui.m_dialogName.m_bgType.selectedIndex = 0;
+                            if (_ui.m_txtPlayName.text == RoleDataManager.roleName)
+                                _ui.m_dialogName.m_bgType.selectedIndex = 0;
+                        }
+                        else
+                            _ui.m_comPlayName.visible = false;
+                    }
+                    else
+                    {
+                        _ui.m_dialogName.m_bgType.selectedIndex = 0;
+                        _ui.m_dialogName.m_showArrow.selectedIndex = 0;
+                        _ui.m_dialogName.m_txtName.text = roleName;
                     }
-                    else 
-                        _ui.m_comPlayName.visible = false;
-                }
-                else { 
-                    _ui.m_dialogName.m_bgType.selectedIndex = 0;
-                    _ui.m_dialogName.m_showArrow.selectedIndex = 0;
-                    _ui.m_dialogName.m_txtName.text = roleName;
-                }
 
-                _wordTextField = _ui.m_dialogName.m_txtContent;
-                _arrow = _ui.m_dialogName.m_iconNext;
+                    _wordTextField = _ui.m_dialogName.m_txtContent;
+                    _arrow = _ui.m_dialogName.m_iconNext;
 
-                if (!lastTextFieldType.Equals("name"))
-                {
-                    lastTextFieldType = "name";
-                    StoryDialogDataManager.Instance.waiting = true;
-                    _ui.m_t0.Play(()=>
+                    if (!lastTextFieldType.Equals("name"))
                     {
-                        StoryDialogDataManager.Instance.waiting = false;
-                    });
+                        lastTextFieldType = "name";
+                        StoryDialogDataManager.Instance.waiting = true;
+                        _ui.m_t0.Play(() =>
+                        {
+                            StoryDialogDataManager.Instance.waiting = false;
+                        });
+                    }
                 }
-            }
-            else
-            {
-                if (IsTeaParty)
-                    _ui.m_dialogText.m_showArrow.selectedIndex = 1;
                 else
-                    _ui.m_dialogText.m_showArrow.selectedIndex = 0;
+                {
+                    if (IsTeaParty)
+                        _ui.m_dialogText.m_showArrow.selectedIndex = 1;
+                    else
+                        _ui.m_dialogText.m_showArrow.selectedIndex = 0;
 
-                _ui.m_dialogText.target.visible = true;
-                _wordTextField = _ui.m_dialogText.m_txtContent;
-                _arrow = _ui.m_dialogText.m_iconNext;
-                lastTextFieldType = "text";
-                _ui.m_comPlayName.visible = false;
-            }
-            _wordList = Regex.Split(words, "&&");
-            _wordIndex = 0;
+                    _ui.m_dialogText.target.visible = true;
+                    _wordTextField = _ui.m_dialogText.m_txtContent;
+                    _arrow = _ui.m_dialogText.m_iconNext;
+                    lastTextFieldType = "text";
+                    _ui.m_comPlayName.visible = false;
+                }
+                _wordIndex = 0;
+
+                _typingEffect = new TypingFadeEffectPro(_wordTextField);
+                _typingEffect.typeFinishedAction = ShowCurrentWords;
 
-            _typingEffect = new TypingFadeEffectPro(_wordTextField);
-            _typingEffect.typeFinishedAction = ShowCurrentWords;
+                ShowNextDialog();
+            }
 
-            ShowNextDialog();
         }
 
         private void ShowNextDialog()
@@ -637,7 +658,6 @@ namespace GFGGame
             _arrow.target.visible = false;
             _wordTextField.verticalAlign = VertAlignType.Top;
             _wordTextField.text = "";
-            ArrayList letters = StoryUtil.GetLettersList(_currentWords);
             _canClickBtnNext = false;
 
             while (StoryDialogDataManager.Instance.waitPicFade || StoryDialogDataManager.Instance.waiting)
@@ -808,5 +828,22 @@ namespace GFGGame
             _ui.m_btnAutoPlay.selected = false;
             Timers.inst.Remove(ShowNextWords);
         }
+
+        private IEnumerator WaitCGAnimFinish()
+        {
+            GameObject cg = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetStoryDialogCGPath("cg_shenjiao"));
+            Animator animator = cg.GetComponentInChildren<Animator>();
+            AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0);
+
+            yield return new WaitForSeconds(info.length);
+            //while (info.normalizedTime < 0.95)
+            //{
+            //    info = animator.GetCurrentAnimatorStateInfo(0);
+            //    yield return new WaitForSeconds(0.1f);
+            //}
+
+            PrefabManager.Instance.Restore(cg);
+            OnStepComplete();
+        }
     }
 }