public void PlayAnimation(string[] OnceWeaponPos, string[] OnceAnimationNames, PackToFashingEff OnceEffs, string[] LoopWeaponPos, string[] LoopAnimationNames, PackToFashingEff Loopeffs) { List <AnimationClip> OnecAnimationClips = new List <AnimationClip>(); if (OnceAnimationNames != null) { OnceAnimationNames.ApplyAllItem(c => OnecAnimationClips.Add(m_hero.animation.GetClip(c))); } List <AnimationClip> LoopAnimationClips = new List <AnimationClip>(); LoopAnimationNames.ApplyAllItem(c => LoopAnimationClips.Add(m_hero.animation.GetClip(c))); StopCoroutine("PlayAnimation"); StopCoroutine("PlayOnceAnimation"); StopCoroutine("PlayeOnceAni"); if (OnecAnimationClips.Count > 0) { StartCoroutine(PlayAnimation(OnceWeaponPos, OnecAnimationClips, OnceEffs, LoopWeaponPos, LoopAnimationClips[0], Loopeffs)); } else { RoleGenerate.AttachWeapon(this.m_hero, LoopWeaponPos); PlayLoopAnimation(LoopAnimationClips[0], Loopeffs); } }
IEnumerator PlayOnceAnimation(List <AnimationClip> clips, PackToFashingEff eff) { StartCoroutine(ShowEffect(eff)); m_hero.animation.wrapMode = WrapMode.Once; int i = 0; while (i < clips.Count) { yield return(StartCoroutine(PlayeOnceAni(clips[i]))); i++; } }
IEnumerator ShowEffect(PackToFashingEff eff) { if (eff != null && eff.Eff != null) { SetCildLayer(eff.Eff.transform, 10); yield return(new WaitForSeconds(eff.StartTime)); UI.CreatObjectToNGUI.InstantiateObj(eff.Eff, EffPoint.transform); } else { yield return(0); EffPoint.transform.ClearChild(); } }
private static void MakePlayGenerateConfigDataList(string xmlFileName, string sheetName) { string xmlPath = Path.Combine(EW_RESOURCE_PLAYER_GENERATE_CONFIG_FOLDER, xmlFileName + ".xml"); TextReader tr = new StreamReader(xmlPath); string text = tr.ReadToEnd(); tr.Close(); tr.Dispose(); if (string.IsNullOrEmpty(text)) { Debug.LogError("Player generate config file not exist"); return; } else { XmlSpreadSheetReader.ReadSheet(text, sheetName); XmlSpreadSheet sheet = XmlSpreadSheetReader.Output; string[] keys = XmlSpreadSheetReader.Keys; object[] levelIds = sheet[keys[0]]; List <PlayerGenerateConfigData> tempList = new List <PlayerGenerateConfigData>(); for (int i = 1; i < levelIds.Length; i++) { PlayerGenerateConfigData data = new PlayerGenerateConfigData(); data.PlayerId = Convert.ToByte(sheet["PlayerId"][i]); data.PlayerName = Convert.ToString(sheet["PlayerName"][i]); data.DefaultAvatar = Convert.ToString(sheet["DefaultAvatar"][i]); data.DefaultAnim = Convert.ToString(sheet["DefaultAnim"][i]); data.DefaultWeapon = Convert.ToString(sheet["DefaultWeapon"][i]); if (!string.IsNullOrEmpty(data.DefaultWeapon)) { var WeaponPath = Path.Combine(EW_ASSET_PLAYER_WEAPON_FOLDER, data.DefaultWeapon + ".prefab"); data.WeaponObj = AssetDatabase.LoadAssetAtPath(WeaponPath, typeof(GameObject)) as GameObject; } var weaponPositins = Convert.ToString(sheet["WeaponPosition"][i]).Split('+'); if (weaponPositins.Length > 0) { data.WeaponPosition = weaponPositins; } else { data.WeaponPosition = new string[] { Convert.ToString(sheet["WeaponPosition"][i]) }; } var normalSkills = Convert.ToString(sheet["NormalSkillID"][i]).Split('+'); data.NormalSkillID = new int[6]; data.NormalSkillID[0] = Convert.ToInt32(normalSkills[0]); //突击 data.NormalSkillID[1] = Convert.ToInt32(normalSkills[1]); //突击后的攻击 data.NormalSkillID[2] = Convert.ToInt32(normalSkills[2]); //以下是修改前的普攻4段 data.NormalSkillID[3] = Convert.ToInt32(normalSkills[3]); data.NormalSkillID[4] = Convert.ToInt32(normalSkills[4]); data.NormalSkillID[5] = Convert.ToInt32(normalSkills[5]); data.ScrollSkillID = Convert.ToInt32(normalSkills[4]); if (normalSkills.Length >= 9) { data.BUFF_SKILLID = Convert.ToInt32(normalSkills[7]); data.FATAL_SKILLID = Convert.ToInt32(normalSkills[8]); } if (normalSkills.Length >= 10) { data.StandUpSkillID = Convert.ToInt32(normalSkills[9]); } if (normalSkills.Length >= 12) { data.OpeningSkillID_1 = Convert.ToInt32(normalSkills[10]); data.OpeningSkillID_2 = Convert.ToInt32(normalSkills[11]); } string skillEffectName = Convert.ToString(sheet["SkillEffect"][i]); if (skillEffectName == "null") { skillEffectName = null; } if (!string.IsNullOrEmpty(skillEffectName)) { var effectPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, skillEffectName + ".prefab"); var skillEffectGo = AssetDatabase.LoadAssetAtPath(effectPath, typeof(GameObject)) as GameObject; data.SkillEffect = skillEffectGo; } //阴影Prefabs data.ShadowEffect = AssetDatabase.LoadAssetAtPath(Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, "JH_Eff_Scenes_011.prefab"), typeof(GameObject)) as GameObject; if (sheetName == "Battle") { var normalBackAttackSkills = Convert.ToString(sheet["BackAttack"][i]).Split('+'); //普通攻击,边退边攻击 data.NormalBackAttackSkillID = new int[6]; data.NormalBackAttackSkillID[0] = Convert.ToInt32(normalBackAttackSkills[0]); //突击 data.NormalBackAttackSkillID[1] = Convert.ToInt32(normalBackAttackSkills[1]); //突击后的攻击 data.NormalBackAttackSkillID[2] = Convert.ToInt32(normalBackAttackSkills[2]); //以下是修改前的普攻4段 data.NormalBackAttackSkillID[3] = Convert.ToInt32(normalBackAttackSkills[3]); data.NormalBackAttackSkillID[4] = Convert.ToInt32(normalBackAttackSkills[4]); data.NormalBackAttackSkillID[5] = Convert.ToInt32(normalBackAttackSkills[5]); string runEffectStr = Convert.ToString(sheet["RunEffect"][i]); data.RunEffect = AssetDatabase.LoadAssetAtPath(Path.Combine("Assets", runEffectStr + ".prefab"), typeof(GameObject)) as GameObject; } var animations = Convert.ToString(sheet["Animations"][i]).Split('+'); if (animations.Length > 0) { data.Animations = animations; } else { data.Animations = new string[] { Convert.ToString(sheet["Animations"][i]) }; } if (sheetName == "UI") { data.ItemAniIdle = Convert.ToString(sheet["Item_Ani_Idle"][i]); data.ItemAniChange = Convert.ToString(sheet["Item_Ani_Change"][i]).Split('|'); data.Item_WeaponPosition = Convert.ToString(sheet["Item_WeaponPosition"][i]).Split('+'); string[] charPosStr = Convert.ToString(sheet["Avatar_CharPos"][i]).Split('+'); data.Avatar_CharPos = new Vector3(float.Parse(charPosStr[1]), float.Parse(charPosStr[2]), float.Parse(charPosStr[3])); data.Avatar_WeaponPos = Convert.ToString(sheet["Avatar_WeaponPos"][i]).Split('+'); data.Avatar_Ani = Convert.ToString(sheet["Avatar_Ani"][i]).Split('|'); // data.RoleUI_ItemToAvatar_Ani=Convert.ToString(sheet["ItemToAvatar_Ani"][i]).Split('|'); // data.RoleUI_AvatarToItem_Ani=Convert.ToString(sheet["AvatarToItem_Ani"][i]).Split('|'); data.Item_InAni = Convert.ToString(sheet["Item_InAni"][i]).Split('|'); string[] Item_InEf = Convert.ToString(sheet["Item_InEff"][i]).Split('|'); List <PackToFashingEff> Item_InEfs = new List <PackToFashingEff>(); foreach (var item in Item_InEf) { PackToFashingEff eff = new PackToFashingEff(); string ItemInEffPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, item.Split('+')[0] + ".prefab"); eff.Eff = AssetDatabase.LoadAssetAtPath(ItemInEffPath, typeof(GameObject)) as GameObject; eff.StartTime = Convert.ToSingle(item.Split('+')[1]); Item_InEfs.Add(eff); } data.Item_InEff = Item_InEfs.ToArray(); data.Item_OutAni = Convert.ToString(sheet["Item_OutAni"][i]).Split('|'); string[] Item_OutEff = Convert.ToString(sheet["Item_OutEff"][i]).Split('|'); List <PackToFashingEff> Item_OutEffs = new List <PackToFashingEff>(); foreach (var item in Item_OutEff) { PackToFashingEff eff = new PackToFashingEff(); string ItemInEffPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, item.Split('+')[0] + ".prefab"); eff.Eff = AssetDatabase.LoadAssetAtPath(ItemInEffPath, typeof(GameObject)) as GameObject; eff.StartTime = Convert.ToSingle(item.Split('+')[1]); Item_OutEffs.Add(eff); } data.Item_OutEff = Item_OutEffs.ToArray(); data.Avatar_InAni = Convert.ToString(sheet["Avatar_InAni"][i]).Split('|'); string[] Avatar_InEff = Convert.ToString(sheet["Avatar_InEff"][i]).Split('|'); List <PackToFashingEff> Avatar_InEffs = new List <PackToFashingEff>(); foreach (var item in Avatar_InEff) { PackToFashingEff eff = new PackToFashingEff(); string ItemInEffPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, item.Split('+')[0] + ".prefab"); eff.Eff = AssetDatabase.LoadAssetAtPath(ItemInEffPath, typeof(GameObject)) as GameObject; eff.StartTime = Convert.ToSingle(item.Split('+')[1]); Avatar_InEffs.Add(eff); } data.Avatar_InEff = Avatar_InEffs.ToArray(); data.Avatar_OutAni = Convert.ToString(sheet["Avatar_OutAni"][i]).Split('|'); string[] Avatar_OutEff = Convert.ToString(sheet["Avatar_OutEff"][i]).Split('|'); List <PackToFashingEff> Avatar_OutEffs = new List <PackToFashingEff>(); foreach (var item in Avatar_OutEff) { PackToFashingEff eff = new PackToFashingEff(); string ItemInEffPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, item.Split('+')[0] + ".prefab"); eff.Eff = AssetDatabase.LoadAssetAtPath(ItemInEffPath, typeof(GameObject)) as GameObject; eff.StartTime = Convert.ToSingle(item.Split('+')[1]); Avatar_OutEffs.Add(eff); } data.Avatar_OutEff = Avatar_OutEffs.ToArray(); data.Avatar_DefaultAni = Convert.ToString(sheet["Avatar_DefaultAni"][i]).Split('|'); string[] camPosStr = Convert.ToString(sheet["Avatar_CameraPos"][i]).Split('+'); data.Avatar_CameraPos = new Vector3(float.Parse(camPosStr[1]), float.Parse(camPosStr[2]), float.Parse(camPosStr[3])); string[] camTargerPosStr = Convert.ToString(sheet["Avatar_CameraTargetPos"][i]).Split('+'); data.Avatar_CameraTargetPos = new Vector3(float.Parse(camTargerPosStr[1]), float.Parse(camTargerPosStr[2]), float.Parse(camTargerPosStr[3])); string[] roleCharPosStr = Convert.ToString(sheet["RoleUI_CharPos"][i]).Split('+'); data.RoleUI_CharPos = new Vector3(float.Parse(roleCharPosStr[1]), float.Parse(roleCharPosStr[2]), float.Parse(roleCharPosStr[3])); data.RoleUI_WeaponPosition = Convert.ToString(sheet["RoleUI_WeaponPosition"][i]).Split('+'); data.RoleUI_Ani_Idle = Convert.ToString(sheet["RoleUI_Ani_Idle"][i]).Split('|'); string[] roleCamPosStr = Convert.ToString(sheet["RoleUI_CameraPos"][i]).Split('+'); data.RoleUI_CameraPos = new Vector3(float.Parse(roleCamPosStr[1]), float.Parse(roleCamPosStr[2]), float.Parse(roleCamPosStr[3])); string[] camTargetPosStr = Convert.ToString(sheet["RoleUI_CameraTargetPos"][i]).Split('+'); data.RoleUI_CameraTargetPos = new Vector3(float.Parse(camTargetPosStr[1]), float.Parse(camTargetPosStr[2]), float.Parse(camTargetPosStr[3])); data.PVP_Ready = Convert.ToString(sheet["PVP_Ready"][i]).Split('|'); data.PVP_Success = Convert.ToString(sheet["PVP_Success"][i]).Split('|'); data.PVP_Fail = Convert.ToString(sheet["PVP_Fail"][i]).Split('|'); data.HitFlyHeight = Convert.ToSingle(sheet["HitFlyHeight"][i]); data.BeAttackBreakLV = Convert.ToInt32(sheet["BeAttackBreakLV"][i]); data.BeHitFlyBreakLV = Convert.ToInt32(sheet["BeHitFlyBreakLV"][i]); data.Team_WeaponPosition = Convert.ToString(sheet["Team_WeaponPosition"][i]).Split('+'); data.Team_Ani_Idle = Convert.ToString(sheet["Team_Ani_Idle"][i]).Split('+'); data.Team_Ani_Join = Convert.ToString(sheet["Team_Ani_Join"][i]).Split('+'); } tempList.Add(data); } CreatePlayerGenerateConfigDataBase(tempList, xmlFileName + sheetName); } }
private static void MakePlayPvpConfigDataList(string xmlFileName, string sheetName) { string path = Path.Combine(RESOURCE_CHARACTER_DATA_FOLDER, xmlFileName + ".xml"); TextReader tr = new StreamReader(path); string text = tr.ReadToEnd(); if (text == null) { Debug.LogError("Equipment item file not exist"); return; } else { XmlSpreadSheetReader.ReadSheet(text, sheetName); XmlSpreadSheet sheet = XmlSpreadSheetReader.Output; string[] keys = XmlSpreadSheetReader.Keys; object[] levelIds = sheet[keys[0]]; List <PlayerPvpConfigData> tempList = new List <PlayerPvpConfigData>(); for (int i = 2; i < levelIds.Length; i++) { PlayerPvpConfigData data = new PlayerPvpConfigData(); //data.m_SzName = Convert.ToString(sheet["szName"][i]); //data.m_IEquipmentID = Convert.ToInt32(sheet["lEquimentID"][i]); data.PlayerId = Convert.ToInt32(sheet["PlayerId"][i]); data.PlayerName = Convert.ToString(sheet["PlayerName"][i]); data.DefaultAvatar = Convert.ToString(sheet["DefaultAvatar"][i]); data.DefaultAnim = Convert.ToString(sheet["DefaultAnim"][i]); data.Animations = Convert.ToString(sheet["Animations"][i]).Split('+'); data.In_Ani = Convert.ToString(sheet["In_Ani"][i]).Split('+'); data.In_WeaponPos = Convert.ToString(sheet["In_WeaponPos"][i]).Split('+'); string inEff = Convert.ToString(sheet["In_Eff"][i]); if (inEff != "0") { string[] str = inEff.Split('+'); PackToFashingEff eff = new PackToFashingEff(); eff.Eff = (GameObject)Resources.LoadAssetAtPath("Assets/Effects/Prefab/" + str[0] + ".prefab", typeof(GameObject)); eff.StartTime = Convert.ToInt32(str[1]); data.In_Eff = eff; } data.NotAdapIdle_Ani = Convert.ToString(sheet["NotAdapIdle_Ani"][i]).Split('+'); data.NotAdapIdle_WeaponPos = Convert.ToString(sheet["NotAdapIdle_WeaponPos"][i]).Split('+'); string NotAdapIdle_Eff = Convert.ToString(sheet["NotAdapIdle_Eff"][i]); if (NotAdapIdle_Eff != "0") { string[] str = NotAdapIdle_Eff.Split('+'); PackToFashingEff eff = new PackToFashingEff(); eff.Eff = (GameObject)Resources.LoadAssetAtPath("Assets/Effects/Prefab/" + str[0] + ".prefab", typeof(GameObject)); eff.StartTime = Convert.ToInt32(str[1]); data.NotAdapIdle_Eff = eff; } data.AdapStar_Ani = Convert.ToString(sheet["AdapStar_Ani"][i]).Split('+'); data.AdapStar_WeaponPos = Convert.ToString(sheet["AdapStar_WeaponPos"][i]).Split('+'); string AdapStar_Eff = Convert.ToString(sheet["AdapStar_Eff"][i]); if (AdapStar_Eff != "0") { string[] str = AdapStar_Eff.Split('+'); PackToFashingEff eff = new PackToFashingEff(); eff.Eff = (GameObject)Resources.LoadAssetAtPath("Assets/Effects/Prefab/" + str[0] + ".prefab", typeof(GameObject)); eff.StartTime = Convert.ToInt32(str[1]); data.AdapStar_Eff = eff; } data.AdapIdle_Ani = Convert.ToString(sheet["AdapIdle_Ani"][i]).Split('+'); data.AdapIdle_WeaponPos = Convert.ToString(sheet["AdapIdle_WeaponPos"][i]).Split('+'); string AdapIdle_Eff = Convert.ToString(sheet["AdapIdle_Eff"][i]); if (AdapIdle_Eff != "0") { string[] str = AdapIdle_Eff.Split('+'); PackToFashingEff eff = new PackToFashingEff(); eff.Eff = (GameObject)Resources.LoadAssetAtPath("Assets/Effects/Prefab/" + str[0] + ".prefab", typeof(GameObject)); eff.StartTime = Convert.ToInt32(str[1]); data.AdapIdle_Eff = eff; } data.EnterGroup_Ani = Convert.ToString(sheet["EnterGroup_Ani"][i]).Split('+'); data.EnterGroup_WeaponPos = Convert.ToString(sheet["EnterGroup_WeaponPos"][i]).Split('+'); string EnterGroup_Eff = Convert.ToString(sheet["EnterGroup_Eff"][i]); if (EnterGroup_Eff != "0") { string[] str = EnterGroup_Eff.Split('+'); PackToFashingEff eff = new PackToFashingEff(); eff.Eff = (GameObject)Resources.LoadAssetAtPath("Assets/Effects/Prefab/" + str[0] + ".prefab", typeof(GameObject)); eff.StartTime = Convert.ToInt32(str[1]); data.EnterGroup_Eff = eff; } tempList.Add(data); } CreatePVPConfigDataList(tempList); } }
void PlayLoopAnimation(AnimationClip clip, PackToFashingEff eff) { m_hero.animation.wrapMode = WrapMode.Loop; m_hero.animation.CrossFade(clip.name); StartCoroutine(ShowEffect(eff)); }
IEnumerator PlayAnimation(string[] OnceWeaponPos, List <AnimationClip> OnecAnimationClips, PackToFashingEff onceEff, string[] LoopWeaponPos, AnimationClip clip, PackToFashingEff LoopEff) { RoleGenerate.AttachWeapon(this.m_hero, OnceWeaponPos); yield return(null); yield return(StartCoroutine(PlayOnceAnimation(OnecAnimationClips, onceEff))); RoleGenerate.AttachWeapon(this.m_hero, LoopWeaponPos); yield return(null); PlayLoopAnimation(clip, LoopEff); }