少年修仙传客户端代码仓库
client_Zxw
2019-01-29 8c559ddfa8c168bad3e16431d3071526b44670e8
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
7个文件已修改
425 ■■■■ 已修改文件
Fight/Actor/State/SMB/STM_BaseAttack.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FashionDress/FashionDressModel.cs 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/BoxInfoWin.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemInfoWin.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemTipsModel.cs 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ModelShowPerfab.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Message/RichMoveEvent.cs 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/State/SMB/STM_BaseAttack.cs
@@ -248,10 +248,12 @@
        if (owner.ActorType == GameObjType.gotPlayer)
        {
            GActorPlayerBase _player = owner as GActorPlayerBase;
            _player.SwitchHeadNameBindNode(false);
            if (_player != null)
            {
                _player.SwitchHeadNameBindNode(false);
                _player.ShowOrHideWeapon(true);
            }
            animator.speed = 1;
            _player.ShowOrHideWeapon(true);
#if UNITY_EDITOR
            string _content = string.Format("STM_BaseAttack => {0} 的技能: {1} 退出技能状态逻辑", owner.ServerInstID, cacheSkillID);
@@ -259,7 +261,7 @@
#endif
        }
        if (_fight.OnSkillCompelete != null)
        if (_fight.OnSkillCompelete != null && m_CacheSkill != null)
        {
            _fight.OnSkillCompelete(m_CacheSkill.id);
        }
@@ -269,7 +271,7 @@
        if (owner is GA_Player || owner is GA_Hero)
        {
            if (owner.State == E_ActorState.CastSkill
             || (m_CacheSkill.id == 190 && owner.State == E_ActorState.Roll))
             || (m_CacheSkill != null && m_CacheSkill.id == 190 && owner.State == E_ActorState.Roll))
            {
                owner.State = E_ActorState.Idle;
            }
@@ -290,13 +292,17 @@
        for (int i = 0; i < m_CastedEffect.Count; ++i)
        {
            if (m_CastedEffect[i] == null)
            {
                continue;
            }
            m_CastedEffect[i].SetAnimatorSpeed(1);
            if (m_CastedEffect[i].config.stopImmediate == 1)
            if (m_CastedEffect[i].config != null
             && m_CastedEffect[i].config.stopImmediate == 1)
            {
                SFXPlayUtility.Instance.Release(m_CastedEffect[i]);
            }
        }
        m_CastedEffect.Clear();
#if UNITY_EDITOR
        if (RuntimeLogUtility.s_LogMoveDistance)
@@ -792,8 +798,10 @@
    protected void DesiceFightMove(GActorFight fightActor, SoConfigBase config)
    {
        m_NeedMove = config.curve != null
        m_NeedMove = config != null
                  && config.curve != null
                  && config.moveDuration > 0
                  && fightActor != null
                  && StatusMgr.Instance.CanMove(fightActor.ServerInstID);
        if (m_NeedMove)
@@ -801,7 +809,9 @@
            bool _moveThrougthEnable = config.moveThrougthEnable;
            bool _forceMoveThrougth = config.forceMoveThrougthEnable;
            if (m_CacheSkill.skillInfo.config != null
            if (m_CacheSkill != null
             && m_CacheSkill.skillInfo != null
             && m_CacheSkill.skillInfo.config != null
             && m_CacheSkill.skillInfo.config.Skillactmark != GAStaticDefine.Act_Roll)
            {
                if (fightActor.SelectTarget != null
System/FashionDress/FashionDressModel.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TableConfig;
using UnityEngine;
using UnityEngine;
namespace Snxxz.UI
{
    [XLua.Hotfix]
@@ -14,6 +14,7 @@
        Dictionary<int, int> fashionDressLevelDict = new Dictionary<int, int>();
        Dictionary<int, Dictionary<int, int>> cabinetPropertyDict = new Dictionary<int, Dictionary<int, int>>();
        Dictionary<int, List<int>> fashionDressTypeDict = new Dictionary<int, List<int>>();
        Dictionary<int, List<int>> fashionDressSuitTypeDict = new Dictionary<int, List<int>>();
        Dictionary<int, Dictionary<int, List<int>>> fashionDressQualityDict = new Dictionary<int, Dictionary<int, List<int>>>();
        const int FASHIONDRESS_REDPOINT_BASE = 10105;
@@ -139,6 +140,7 @@
        void ParseConfig()
        {
            {
                fashionDressSuitTypeDict.Clear();
                var configs = Config.Instance.GetAllValues<FashionDressConfig>();
                fashionDressLevelUpItems = new List<int>();
                foreach (var config in configs)
@@ -153,6 +155,18 @@
                        }
                        list.Add(config.CoatID);
                    }
                    if (!fashionDressSuitTypeDict.ContainsKey(config.FashionSuitType))
                    {
                        var list = new List<int>();
                        list.Add(config.CoatID);
                        fashionDressSuitTypeDict.Add(config.FashionSuitType, list);
                    }
                    else
                    {
                        fashionDressSuitTypeDict[config.FashionSuitType].Add(config.CoatID);
                    }
                    if (!fashionDressLevelUpItems.Contains(config.UnlockItemID))
                    {
                        fashionDressLevelUpItems.Add(config.UnlockItemID);
@@ -278,6 +292,11 @@
        public bool TryGetFashionDresses(int type, out List<int> list)
        {
            return fashionDressTypeDict.TryGetValue(type, out list);
        }
        public bool TryGetFashionIds(int suitType, out List<int> list)
        {
            return fashionDressSuitTypeDict.TryGetValue(suitType, out list);
        }
        public bool TryGetFashionDressProperty(int id, int level, out Dictionary<int, int> dict)
@@ -593,5 +612,5 @@
            return 0;
        }
    }
}
}
System/KnapSack/Logic/BoxInfoWin.cs
@@ -50,6 +50,8 @@
        [SerializeField]
        CanvasGroup tipAlpha;
        [SerializeField] ModelShowPerfab modelShow;
        private List<GameObject> tempObjlist = new List<GameObject>();
        ItemTipsModel _itemTipsModel;
@@ -186,6 +188,18 @@
            CreateFuncBtn();
            RefreshRemainTime(itemTipsModel.curAttrData.guid);
            bool isShowModel = itemTipsModel.IsShowModel(itemTipsModel.curAttrData.itemId, modelShow);
            if (isShowModel)
            {
                bgObj.anchoredPosition3D = new Vector3(197, 0, 0);
                modelShow.gameObject.SetActive(true);
            }
            else
            {
                modelShow.gameObject.SetActive(false);
                bgObj.anchoredPosition3D = Vector3.zero;
            }
        }
        private void CheckUselimit()
@@ -346,7 +360,7 @@
            //itemTipsModel.SetCommonTipPos(bgObj);
            bottomPart.gameObject.SetActive(false);
            bottomPart.gameObject.SetActive(true);
            bgObj.localPosition = Vector3.zero;
            //bgObj.localPosition = Vector3.zero;
            tipAlpha.alpha = 1;
        }
System/KnapSack/Logic/ItemInfoWin.cs
@@ -80,8 +80,6 @@
        Color32 conditionColor = new Color32(255, 244, 205, 255);
        Color32 conditionRedColor = new Color32(255, 1, 1, 255);
        Dictionary<int, int> petSkillDict;
        Dictionary<int, List<int>> mountSkillDict;
        protected override void BindController()
        {
@@ -131,8 +129,6 @@
        private void InitUI()
        {
            petSkillDict = null;
            mountSkillDict = null;
            if (itemTipsModel.curAttrData == null)
                return;
@@ -169,32 +165,16 @@
            CreateFuncBtn();
            RefreshRemainTime(itemTipsModel.curAttrData.guid);
            switch (itemTipsModel.curAttrData.itemConfig.Type)
            bool isShowModel = itemTipsModel.IsShowModel(itemTipsModel.curAttrData.itemId,modelShow);
            if(isShowModel)
            {
                case 125:
                    bgObj.anchoredPosition3D = new Vector3(197,0,0);
                    modelShow.gameObject.SetActive(true);
                    PetInfoConfig petInfo = itemTipsModel.unlockPetDict[itemTipsModel.curAttrData.itemConfig.EffectValueA1];
                    petSkillDict = itemTipsModel.GetPetSkillDict(itemTipsModel.curAttrData.itemConfig.EffectValueA1);
                    modelShow.SetModelShow(petInfo.ID, ModelShowType.pet, Language.Get("TreasureEffect103"), petInfo.ShowFightPower);
                    break;
                case 124:
                    bgObj.anchoredPosition3D = new Vector3(197, 0, 0);
                    modelShow.gameObject.SetActive(true);
                    HorseConfig horseConfig = itemTipsModel.unlockMountDict[itemTipsModel.curAttrData.itemConfig.EffectValueA1];
                    mountSkillDict = itemTipsModel.GetMountSkillDict(itemTipsModel.curAttrData.itemConfig.EffectValueA1);
                    modelShow.SetModelShow(horseConfig.Model, ModelShowType.mount, Language.Get("TreasureEffect103"), horseConfig.ShowFightPower);
                    break;
                case 82:
                case 83:
                    bgObj.anchoredPosition3D = new Vector3(197, 0, 0);
                    modelShow.gameObject.SetActive(true);
                    modelShow.SetModelShow(itemTipsModel.curAttrData.itemConfig.EffectValueA1, ModelShowType.FashionDress, Language.Get("TreasureEffect103"));
                    break;
                default:
                    modelShow.gameObject.SetActive(false);
                    bgObj.anchoredPosition3D = Vector3.zero;
                    break;
                bgObj.anchoredPosition3D = new Vector3(197, 0, 0);
                modelShow.gameObject.SetActive(true);
            }
            else
            {
                modelShow.gameObject.SetActive(false);
                bgObj.anchoredPosition3D = Vector3.zero;
            }
        }
System/KnapSack/Logic/ItemTipsModel.cs
@@ -75,7 +75,7 @@
        {
            get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); }
        }
        FashionDressModel fashionDress { get { return ModelCenter.Instance.GetModel<FashionDressModel>(); } }
        DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } }
        public override void Init()
@@ -2734,6 +2734,175 @@
            return shareNumDes;
        }
        #endregion
        #region 判断是否展示模型
        public Dictionary<int, int> showModelAttrDict = new Dictionary<int, int>();
        public bool IsShowModel(int itemId,ModelShowPerfab showPerfab)
        {
            var config = Config.Instance.Get<ItemConfig>(itemId);
            if (config == null) return false;
            int fightPower = 0;
            switch (config.Type)
            {
                case 125:
                    PetInfoConfig petInfo = unlockPetDict[config.EffectValueA1];
                    fightPower = petInfo.ShowFightPower;
                    showPerfab.SetModelShow(petInfo.ID, ModelShowType.pet, Language.Get("TreasureEffect103"),fightPower);
                    return true;
                case 124:
                    HorseConfig horseConfig = unlockMountDict[config.EffectValueA1];
                    fightPower = horseConfig.ShowFightPower;
                    showPerfab.SetModelShow(horseConfig.Model, ModelShowType.mount, Language.Get("TreasureEffect103"),fightPower);
                    return true;
            }
            bool isFashion = TryGetFashionFightPower(config,out fightPower);
            if(isFashion)
            {
                showPerfab.SetModelShow(itemId, ModelShowType.FashionDress, Language.Get("TreasureEffect103"),fightPower);
                return true;
            }
            return false;
        }
        private bool TryGetFashionFightPower(ItemConfig itemConfig,out int fightPower)
        {
            showModelAttrDict.Clear();
            fightPower = 0;
            if (itemConfig == null) return false;
            int fashionType = 0;
            int fashionId = 0;
            bool isFashion = TryGetItemFashionData(itemConfig.ID,out fashionType,out fashionId);
            if(isFashion)
            {
                List<int> fashionIds = null;
                fashionDress.TryGetFashionIds(fashionType, out fashionIds);
                if (fashionId == 0)
                {
                    if (fashionIds != null)
                    {
                        foreach (var id in fashionIds)
                        {
                            Dictionary<int, int> dict = null;
                            fashionDress.TryGetFashionDressProperty(id, 1, out dict);
                            if (dict != null)
                            {
                                foreach (var attrId in dict.Keys)
                                {
                                    var attrValue = dict[attrId];
                                    if (!showModelAttrDict.ContainsKey(attrId))
                                    {
                                        showModelAttrDict.Add(attrId, attrValue);
                                    }
                                    else
                                    {
                                        showModelAttrDict[attrId] += attrValue;
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    Dictionary<int, int> dict = null;
                    fashionDress.TryGetFashionDressProperty(fashionId, 1, out dict);
                    if (dict != null)
                    {
                        foreach (var attrId in dict.Keys)
                        {
                            var attrValue = dict[attrId];
                            if (!showModelAttrDict.ContainsKey(attrId))
                            {
                                showModelAttrDict.Add(attrId, attrValue);
                            }
                            else
                            {
                                showModelAttrDict[attrId] += attrValue;
                            }
                        }
                    }
                }
                fightPower = UIHelper.GetFightPower(showModelAttrDict);
                return true;
            }
            return false;
        }
        public bool TryGetItemFashionData(int itemId,out int fashionType,out int fashionId)
        {
            fashionType = 0;
            fashionId = 0;
            Dictionary<int, List<int>> effectDict = null;
            GetItemEffectDict(itemId, out effectDict);
            foreach (var key in effectDict.Keys)
            {
                var valueList = effectDict[key];
                if (key == 244)
                {
                    fashionType = valueList[0];
                    fashionId = valueList[1];
                    return true;
                }
            }
            return false;
        }
        private void GetItemEffectDict(int itemId,out Dictionary<int,List<int>> dict)
        {
            var config = Config.Instance.Get<ItemConfig>(itemId);
            dict = new Dictionary<int, List<int>>();
            if (config == null) return;
            if(config.Effect1 != 0)
            {
                List<int> valuelist = new List<int>();
                valuelist.Add(config.EffectValueA1);
                valuelist.Add(config.EffectValueB1);
                valuelist.Add(config.EffectValueC1);
                dict.Add(config.Effect1,valuelist);
            }
            if(config.Effect2 != 0)
            {
                List<int> valuelist = new List<int>();
                valuelist.Add(config.EffectValueA2);
                valuelist.Add(config.EffectValueB2);
                valuelist.Add(config.EffectValueC2);
                dict.Add(config.Effect2, valuelist);
            }
            if (config.Effect3 != 0)
            {
                List<int> valuelist = new List<int>();
                valuelist.Add(config.EffectValueA3);
                valuelist.Add(config.EffectValueB3);
                valuelist.Add(config.EffectValueC3);
                dict.Add(config.Effect3, valuelist);
            }
            if (config.Effect4 != 0)
            {
                List<int> valuelist = new List<int>();
                valuelist.Add(config.EffectValueA4);
                valuelist.Add(config.EffectValueB4);
                valuelist.Add(config.EffectValueC4);
                dict.Add(config.Effect4, valuelist);
            }
            if (config.Effect5 != 0)
            {
                List<int> valuelist = new List<int>();
                valuelist.Add(config.EffectValueA5);
                valuelist.Add(config.EffectValueB5);
                valuelist.Add(config.EffectValueC5);
                dict.Add(config.Effect5, valuelist);
            }
        }
        #endregion
    }
    public class ItemAttrData
System/KnapSack/Logic/ModelShowPerfab.cs
@@ -14,6 +14,7 @@
        ModelShowType showType;
        FashionDressModel fashionDressModel { get { return ModelCenter.Instance.GetModel<FashionDressModel>(); } }
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        MagicianModel godWeaponModel
        {
            get { return ModelCenter.Instance.GetModel<MagicianModel>(); }
@@ -38,6 +39,7 @@
            titleText.text = title;
            this.showType = showType;
            var job = PlayerDatas.Instance.baseData.Job;
            switch (showType)
            {
                case ModelShowType.treasure:
@@ -47,11 +49,28 @@
                    UI3DModelExhibition.Instance.ShowHourse(id, modelImg);
                    break;
                case ModelShowType.pet:
                    var config = Config.Instance.Get<NPCConfig>(id);
                    UI3DModelExhibition.Instance.ShowNPC(id, config.UIModeLOffset, config.UIModelRotation, modelImg);
                    var npcConfig = Config.Instance.Get<NPCConfig>(id);
                    UI3DModelExhibition.Instance.ShowNPC(id, npcConfig.UIModeLOffset, npcConfig.UIModelRotation, modelImg);
                    break;
                case ModelShowType.FashionDress:
                    UI3DModelExhibition.Instance.ShowOtherPlayer(modelImg,SetFashionDressData(id));
                    var itemConfig = Config.Instance.Get<ItemConfig>(id);
                    if(itemConfig != null)
                    {
                        int fashionType = 0;
                        int fashionId = 0;
                        bool isFashion = tipsModel.TryGetItemFashionData(itemConfig.ID, out fashionType, out fashionId);
                        if(isFashion)
                        {
                            List<int> fashionIds = null;
                            fashionDressModel.TryGetFashionIds(fashionType, out fashionIds);
                            if(fashionIds != null && fashionIds.Count > 0)
                            {
                                UI3DModelExhibition.Instance.ShowOtherPlayer(modelImg, SetFashionDressData(fashionIds));
                            }
                        }
                    }
                    break;
            }
@@ -68,76 +87,79 @@
            }
        }
        public UI3DPlayerExhibitionData SetFashionDressData(int fashionId)
        public UI3DPlayerExhibitionData SetFashionDressData(List<int> fashionIds)
        {
            var job = PlayerDatas.Instance.baseData.Job;
            var playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>();
            //var playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>();
            var clothes = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retClothes);
            var clothesId = clothes == null ? 0 : (int)clothes.itemInfo.ItemID;
            //var clothes = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retClothes);
            //var clothesId = clothes == null ? 0 : (int)clothes.itemInfo.ItemID;
            var weapon = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWeapon);
            var weaponId = weapon == null ? 0 : (int)weapon.itemInfo.ItemID;
            //var weapon = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWeapon);
            //var weaponId = weapon == null ? 0 : (int)weapon.itemInfo.ItemID;
            var wings = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWing);
            var wingsId = wings == null ? 0 : (int)wings.itemInfo.ItemID;
            //var wings = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWing);
            //var wingsId = wings == null ? 0 : (int)wings.itemInfo.ItemID;
            var secondary = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWeapon2);
            var secondaryId = secondary == null ? 0 : (int)secondary.itemInfo.ItemID;
            FashionDress fashionDress = null;
            bool isFashion = fashionDressModel.TryGetFashionDress(fashionId,out fashionDress);
            //var secondary = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWeapon2);
            //var secondaryId = secondary == null ? 0 : (int)secondary.itemInfo.ItemID;
            var fashionClothesId = 0;
            var fashionWeaponId = 0;
            var fashionSecondaryId = 0;
            if(isFashion)
            foreach(var fashionId in fashionIds)
            {
                int itemId = fashionDress.requireLevelUpItem;
                var itemConfig = Config.Instance.Get<ItemConfig>(itemId);
                switch(fashionDress.fashionDressType)
                FashionDress fashionDress = null;
                bool isFashion = fashionDressModel.TryGetFashionDress(fashionId, out fashionDress);
                if (isFashion)
                {
                    case 1:
                        fashionClothesId = fashionDress.GetEquipItemId();
                        break;
                    case 2:
                        fashionWeaponId = fashionDress.GetEquipItemId();
                        break;
                    case 3:
                        fashionSecondaryId = fashionDress.GetEquipItemId();
                        break;
                }
            }
            int _suitLevel = 0;
            if (clothes != null)
            {
                if (clothes.itemInfo.IsSuite == 1)
                {
                    if (clothes.GetUseDataModel(30) != null && clothes.GetUseDataModel(30)[0] != 0)
                    int itemId = fashionDress.requireLevelUpItem;
                    var itemConfig = Config.Instance.Get<ItemConfig>(itemId);
                    switch (fashionDress.fashionDressType)
                    {
                        _suitLevel = clothes.GetUseDataModel(30)[0];
                        case 1:
                            fashionClothesId = fashionDress.GetEquipItemId();
                            break;
                        case 2:
                            fashionWeaponId = fashionDress.GetEquipItemId();
                            break;
                        case 3:
                            fashionSecondaryId = fashionDress.GetEquipItemId();
                            break;
                    }
                }
            }
            Dictionary<int, int> dict = null;
            EquipShowSwitch.IsGodWeaponEffectOn(PlayerDatas.Instance.baseData.equipShowSwitch, out dict);
            //int _suitLevel = 0;
            //ItemUseDataKey
            //if (clothes != null)
            //{
            //    if (clothes.itemInfo.IsSuite == 1)
            //    {
            //        if (clothes.GetUseDataModel(30) != null && clothes.GetUseDataModel(30)[0] != 0)
            //        {
            //            _suitLevel = clothes.GetUseDataModel(30)[0];
            //        }
            //    }
            //}
            //Dictionary<int, int> dict = null;
            //EquipShowSwitch.IsGodWeaponEffectOn(PlayerDatas.Instance.baseData.equipShowSwitch, out dict);
            UI3DPlayerExhibitionData data = new UI3DPlayerExhibitionData()
            {
                job = job,
                clothesId = clothesId,
                suitLevel = _suitLevel,
                weaponId = weaponId,
                wingsId = wingsId,
                secondaryId = secondaryId,
                //clothesId = clothesId,
                //suitLevel = _suitLevel,
                //weaponId = weaponId,
                //wingsId = wingsId,
                //secondaryId = secondaryId,
                fashionClothesId = fashionClothesId,
                fashionWeaponId = fashionWeaponId,
                fashionSecondaryId = fashionSecondaryId,
                isDialogue = false,
                godWeapons = dict
                //godWeapons = dict
            };
            return data;
        }
System/Message/RichMoveEvent.cs
@@ -121,7 +121,7 @@
                    //}
                    //else
                    //{
                        MoveToMapPos(_mapId, x, y, line);
                    MoveToMapPos(_mapId, x, y, line);
                    //}
                }
                break;
@@ -206,15 +206,25 @@
    {
        GA_Hero _hero = PlayerDatas.Instance.hero;
        if (_hero == null)
        if (_hero == null || _hero.SkillMgr == null)
        {
            yield break;
        }
        while (_hero.SkillMgr.CurCastSkill != null &&
        while (_hero != null &&
               _hero.SkillMgr.CurCastSkill != null &&
               _hero.SkillMgr.CurCastSkill.SkillCompelete == false)
        {
            yield return null;
            if (_hero == null || _hero.SkillMgr == null)
            {
                yield break;
            }
        }
        if (_hero == null)
        {
            yield break;
        }
        MapTransferUtility.Instance.MoveToNPC(id);
@@ -229,11 +239,18 @@
            yield break;
        }
        while (_hero.SkillMgr.CurCastSkill != null &&
        while (_hero != null &&
               _hero.SkillMgr.CurCastSkill != null &&
               _hero.SkillMgr.CurCastSkill.SkillCompelete == false)
        {
            yield return null;
        }
        if (_hero == null)
        {
            yield break;
        }
        pos.y = _hero.Pos.y;
        _hero.MoveToPosition(pos);
    }