/// <summary> /// 监听角色状态更改(主要是装备) /// </summary> /// <param name="iPlayerState"></param> /// <param name="fieldName"></param> private void CallBackIPlayerStateState(IPlayerState iPlayerState, string fieldName) { if (!playerAnimator) { return; } //角色装备发生变化 if (string.Equals(fieldName, GameState.Instance.GetFieldName <IPlayerState, bool>(temp => temp.EquipmentChanged))) { PlayerState playerState = DataCenter.Instance.GetEntity <PlayerState>(); PlayGoods playGoods = playerState.PlayerAllGoods.Where(temp => temp.GoodsLocation == GoodsLocation.Wearing && temp.leftRightArms != null && temp.leftRightArms.Value == true).FirstOrDefault(); if (playGoods != null) { EnumGoodsType enumGoodsType = playGoods.GoodsInfo.EnumGoodsType; //与1000相除求出剔除了具体类型后的上层一分类 //然后与100求余计算出具体的武器分类 //因为武器的分类是从10开始的因此减去10 //动画的第一个分类留空为0表示空手,因此加1 int num = (((int)enumGoodsType) / 1000) % 100 - 10 + 1; //如果是武器 if (enumGoodsType > EnumGoodsType.Arms && enumGoodsType < EnumGoodsType.Arms + 100000) { playerAnimator.SetFloat("WeaponType", num); } else //否则空手 { playerAnimator.SetFloat("WeaponType", 0); } } else { playerAnimator.SetFloat("WeaponType", 0);//0表示空手 } } }
/// <summary> /// 通过类型获取节点对象 /// </summary> /// <param name="targetType"></param> /// <returns></returns> private static GoodsNode GetGoodNode(EnumGoodsType targetType) { GoodsNode goodsNode = null; goodsNodeDic.TryGetValue(targetType, out goodsNode); return(goodsNode); }
/// <summary> /// 将字符串转换成数据 /// </summary> /// <param name="value">数据</param> public void SetData(string value) { string[] lines = value.Split(dataLineSplit, StringSplitOptions.RemoveEmptyEntries); foreach (string line in lines) { string[] datas = line.Split(dataValueSplit, StringSplitOptions.RemoveEmptyEntries); if (datas.Length == 2) { switch (datas[0]) { case "itemType": try { itemType = (EnumGoodsType)Enum.Parse(typeof(EnumGoodsType), datas[1].Trim()); } catch { } break; case "num": int.TryParse(datas[1].Trim(), out num); break; case "minQuality": try { minQuality = (EnumQualityType)Enum.Parse(typeof(EnumQualityType), datas[1].Trim()); } catch { } break; case "maxQuality": try { maxQuality = (EnumQualityType)Enum.Parse(typeof(EnumQualityType), datas[1].Trim()); } catch { } break; } } } }
/// <summary> /// 判断给定的父子关系是否存在 /// </summary> /// <param name="child">子节点</param> /// <param name="parent">父节点</param> /// <param name="ignoreDeep">是否忽略深度,如果忽略则会忽略两者之间的节点</param> /// <returns></returns> public static bool IsChildGoodsNode(EnumGoodsType child, EnumGoodsType parent, bool ignoreDeep = true) { if ((int)child < (int)parent) { return(false); } if ((int)child - (int)parent > 1000000) { return(false); } GoodsNode childNode = GetGoodNode(child); GoodsNode parentNode = GetGoodNode(parent); if (childNode == null || parentNode == null) { return(false); } if (!ignoreDeep) { return(Equals(childNode.Parent, parentNode)); } else { GoodsNode _parentNode = childNode; while (_parentNode != null) { if (Equals(_parentNode, parentNode)) { return(true); } _parentNode = _parentNode.Parent; } return(false); } }
/// <summary> /// 判断是否是双手武器 /// </summary> /// <param name="enumGoodsType"></param> /// <returns></returns> public static bool IsTwoHandedWeapon(EnumGoodsType enumGoodsType) { return(GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.TwoHandedSword) || //双手剑 GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Arch) || //弓 GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.CrossBow) || //弩 GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.LongRod)); //长杖 }
public Goods(EnumGoodsType enumGoodsType, string name, int weight, int price, string expain) { this.enumGoodsType = enumGoodsType; this.GoodsName = name; this.Weight = weight; this.Price = price; this.Explain = expain; }
/// <summary> /// 点击条目后的动作 /// </summary> private void ItemClickAction() { //卖出物品到商店 if (SelectGoods == null) { return; } PlayGoods playGoods = SelectGoods.value as PlayGoods; if (playGoods == null) { return; } //计算物品的价格 int sprice = GoodsSprice(playGoods.GoodsInfo); playerState.Sprice += sprice / 2; iPlayerState.SpriteChanged = true;//设置金钱发生变化 EnumGoodsType baseGoodsType = playGoods.GoodsInfo.EnumGoodsType; //如果是药品或道具等消耗品 if (baseGoodsType > EnumGoodsType.Item && baseGoodsType < EnumGoodsType.SpecialItem) { //商人自身是否有该消耗品 PlayGoods businessman_playGoods = businessman.BaseList.FirstOrDefault(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType); //商人回收道具是否有该消耗品 if (businessman_playGoods == null) { businessman_playGoods = businessman.SellPropsList.FirstOrDefault(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType); } //如果还没有则添加到回收栏 if (businessman_playGoods == null) { businessman_playGoods = new PlayGoods(playGoods.ID, playGoods.GoodsInfo, GoodsLocation.None); businessman.SellPropsList.Add(businessman_playGoods); } businessman_playGoods.Count++; playGoods.Count--; //如果当前数量为0则移除 if (playGoods.Count <= 0) { playerState.PlayerAllGoods.Remove(playGoods); } } else { //移除玩家身上的道具 playGoods.GoodsLocation = GoodsLocation.None; playerState.PlayerAllGoods.Remove(playGoods); //将道具转移到商人的回收栏 businessman.SellPropsList.Add(playGoods); //显示列表减少 RemoveItemShow(playGoods); } }
/// <summary> /// 根据物品枚举获取基本信息 /// </summary> /// <param name="enumGoodsType"></param> /// <returns></returns> public Goods this[EnumGoodsType enumGoodsType] { get { int intType = (int)enumGoodsType; if (allGoodsInfo.ContainsKey(intType)) { return(allGoodsInfo[intType]); } else { return(null); } } }
/// <summary> /// 用于检测物理技能和普通攻击 /// </summary> /// <param name="iAnimatorState"></param> /// <param name="fieldName"></param> private void IAnimatorStateChanged(IAnimatorState iAnimatorState, string fieldName) { if (string.Equals(fieldName, GameState.Instance.GetFieldName <IAnimatorState, EnumPhysicAnimatorType>(temp => temp.PhysicAnimatorType))) { if (iAnimatorState.PhysicAnimatorType == EnumPhysicAnimatorType.Skill) { PhysicSkillAudioStruct physicSkillAudioStruct = physicSkillAudios.FirstOrDefault(temp => temp.SkillType == iAnimatorState.PhysicAnimatorSkillType); if (physicSkillAudioStruct != null) { audioSources[2].clip = physicSkillAudioStruct.Clip; audioSources[2].Play(); } } else if (iAnimatorState.PhysicAnimatorType == EnumPhysicAnimatorType.Normal) { PlayerState playerState = DataCenter.Instance.GetEntity <PlayerState>(); PlayGoods playGoods = playerState.PlayerAllGoods.Where(temp => temp.GoodsLocation == GoodsLocation.Wearing && temp.leftRightArms != null && temp.leftRightArms.Value == false).FirstOrDefault(); if (playGoods != null) { EnumGoodsType enumGoodsType = playGoods.GoodsInfo.EnumGoodsType; //与1000相除求出剔除了具体类型后的上层一分类 //然后与100求余计算出具体的武器分类 //因为武器的分类是从10开始的因此减去10 //动画的第一个分类留空为0表示空手,因此加1 int num = (((int)enumGoodsType) / 1000) % 100 - 10 + 1; PhysicNormalAudioStruct physicNormalAudioStruct = physicNormalAudios.FirstOrDefault(temp => temp.WeaponNum == num); if (physicNormalAudioStruct != null) { if (iAnimatorState.PhycisActionNowType == 0) { audioSources[2].clip = physicNormalAudioStruct.Clip1; } else if (iAnimatorState.PhycisActionNowType == 1) { audioSources[2].clip = physicNormalAudioStruct.Clip2; } else if (iAnimatorState.PhycisActionNowType == 2) { audioSources[2].clip = physicNormalAudioStruct.Clip3; } audioSources[2].Play(); } } } } }
/// <summary> /// 获取指定物品的大类 /// </summary> /// <param name="child">子节点</param> /// <param name="deep">检索深度,默认为1(即上下层关系 )</param> /// <returns></returns> public static EnumGoodsType?GetParentGoodsType(EnumGoodsType child, int deep = 1) { GoodsNode childNode = GetGoodNode(child); if (childNode == null) { return(null); } GoodsNode parentNode = childNode; while (deep > 0 && parentNode != null) { deep--; parentNode = parentNode.Parent; } if (parentNode != null) { return(parentNode.GoodsType); } return(null); }
/// <summary> /// 点击条目后的动作 /// </summary> private void ItemClickAction() { //购买物品到包裹 if (SelectGoods == null) { return; } PlayGoods playGoods = SelectGoods.value as PlayGoods; if (playGoods == null) { return; } //判断商品的价格,如果可以购买则减去金钱 int sprice = GoodsSprice(playGoods.GoodsInfo); if (playerState.Sprice < sprice) { return; } playerState.Sprice -= sprice; iPlayerState.SpriteChanged = true;//设置金钱发生变化 EnumGoodsType baseGoodsType = playGoods.GoodsInfo.EnumGoodsType; //如果是药品或道具等消耗品 if (baseGoodsType > EnumGoodsType.Item && baseGoodsType < EnumGoodsType.SpecialItem) { //玩家自身是否存在消耗品 PlayGoods player_playGoods = playerState.PlayerAllGoods.FirstOrDefault(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType); if (player_playGoods != null)//如果存在则直接加count { player_playGoods.Count++; } else//如果不存在则创建 { PlayGoods newPlayGoods = new PlayGoods(playGoods.ID, playGoods.GoodsInfo, GoodsLocation.Package); newPlayGoods.Count = 1; newPlayGoods.QualityType = playGoods.QualityType; playerState.PlayerAllGoods.Add(newPlayGoods); } //商店数量减少 playGoods.Count--; if (playGoods.Count <= 0)//如果当前数量归0则移除 { if (businessman.BaseList.Contains(playGoods)) { businessman.BaseList.Remove(playGoods); } else { businessman.SellPropsList.Remove(playGoods); } //显示列表减少 RemoveItemShow(playGoods); } else//如果没有归零则修改数量的显示 { ChangeItemsShow(playGoods); } } else { //将道具转移到玩家身上 playGoods.GoodsLocation = GoodsLocation.Package; playerState.PlayerAllGoods.Add(playGoods); //移除商人身上的道具 if (businessman.BaseList.Contains(playGoods)) { businessman.BaseList.Remove(playGoods); } else { businessman.SellPropsList.Remove(playGoods); } //显示列表减少 RemoveItemShow(playGoods); } }
public override void ActionTrigger() { base.ActionTrigger(); if (!treasureBoxState) { //触发宝箱 treasureBoxState = true; if (animator != null) { animator.SetBool("TreasureBox", treasureBoxState); } //保存状态 SaveDataAction(true); //发放道具 Dictionary <EnumGoodsType, ActionInteractiveDataInfo.TreasureBoxStruct> dataDic = ActionInteractiveDataInfo.OtherValue as Dictionary <EnumGoodsType, ActionInteractiveDataInfo.TreasureBoxStruct>; if (dataDic != null) { //实例化数据并填入存档中 GoodsMetaInfoMations goodsMetaInfoMations = DataCenter.Instance.GetMetaData <GoodsMetaInfoMations>(); PlayerState playerState = DataCenter.Instance.GetEntity <PlayerState>(); foreach (KeyValuePair <EnumGoodsType, ActionInteractiveDataInfo.TreasureBoxStruct> data in dataDic) { EnumGoodsType baseGoodsType = data.Key; EnumQualityType qualityTypeMin = data.Value.MinQualityType; EnumQualityType qualityTypeMax = data.Value.MaxQualityType; Goods addGoods = goodsMetaInfoMations[baseGoodsType].Clone(true);//获取需要添加物品的原始属性 //如果是道具或炼金物品则可以叠加,但是没有品质 if (baseGoodsType > EnumGoodsType.Item && baseGoodsType < EnumGoodsType.SpecialItem) { //尝试从玩家道具中获取id,如果没有则新建一个(这个id并没有什么卵用) int addGoodsID = playerState.PlayerAllGoods.Where(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType).Select(temp => temp.ID).FirstOrDefault(); if (addGoodsID == 0) { addGoodsID = NowTimeToID.GetNowID(DataCenter.Instance.GetEntity <GameRunnedState>()); PlayGoods playGoods = new PlayGoods(addGoodsID, addGoods, GoodsLocation.Package); playGoods.QualityType = EnumQualityType.White; playGoods.Count = data.Value.Count; playerState.PlayerAllGoods.Add(playGoods); } else { PlayGoods playGoods = playerState.PlayerAllGoods.FirstOrDefault(temp => temp.ID == addGoodsID); playGoods.Count += data.Value.Count; } } //如果不是道具和炼金物品则不可以叠加,但是存在品质 else { int addGoodsID = NowTimeToID.GetNowID(DataCenter.Instance.GetEntity <GameRunnedState>()); EnumQualityType qualityType = (EnumQualityType)UnityEngine.Random.Range((int)qualityTypeMin, (int)qualityTypeMax + 1); // 根据品质设置属性 if (qualityType != EnumQualityType.Red)//如果是唯一的则不用改变属性 { //将所有属性随机 addGoods.goodsAbilities.ForEach(temp => { float min = temp.Value * 0.8f; float max = temp.Value * 1.2f; temp.Value = (int)UnityEngine.Random.Range(min, max); }); //取出用于分割固定属性以及随机属性的条目 GoodsAbility goodsAbility_nothing = addGoods.goodsAbilities.FirstOrDefault(temp => temp.AbilibityKind == EnumGoodsAbility.Nothing); int index = -1; if (goodsAbility_nothing != null) { index = addGoods.goodsAbilities.IndexOf(goodsAbility_nothing); } //存在分割属性 if (index > -1 && index + 1 < addGoods.goodsAbilities.Count) { //取出分割项后的可变项 List <EnumGoodsAbility> randomAbilitys = Enumerable.Range(index + 1, addGoods.goodsAbilities.Count - index - 1). Select(temp => addGoods.goodsAbilities[temp]).Select(temp => temp.AbilibityKind).ToList(); int saveAbilityCount = (int)qualityType;//可保留的属性 while (randomAbilitys.Count > saveAbilityCount) { int removeIndex = UnityEngine.Random.Range(0, randomAbilitys.Count); EnumGoodsAbility removeGoodsAbility = randomAbilitys[removeIndex]; addGoods.goodsAbilities.RemoveAll(temp => temp.AbilibityKind == removeGoodsAbility); randomAbilitys.RemoveAt(removeIndex); } } } addGoods.goodsAbilities.RemoveAll(temp => temp.AbilibityKind == EnumGoodsAbility.Nothing); PlayGoods playGoods = new PlayGoods(addGoodsID, addGoods, GoodsLocation.Package); playGoods.QualityType = qualityType; playGoods.Count = 1; playerState.PlayerAllGoods.Add(playGoods); } } } } }
/// <summary> /// 判断是否是主手武器 /// </summary> /// <param name="enumGoodsType"></param> /// <returns></returns> public static bool IsRightOneHandedWeapon(EnumGoodsType enumGoodsType) { return(GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.SingleHanedSword) || //单手剑 GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Dagger) || //匕首 GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.ShortRod)); //短杖 }
public Goods(EnumGoodsType enumGoodsType) { this.enumGoodsType = enumGoodsType; }
/// <summary> /// 创建物品并将物品保存到存档中 /// </summary> /// <param name="playerState"></param> /// <param name="goodsMetaInfoMations"></param> /// <param name="baseGoodsType"></param> /// <param name="minQuality"></param> /// <param name="maxQuality"></param> /// <param name="count"></param> /// <returns></returns> public static PlayGoods CreatePlayGoodsAddToPlayData(PlayerState playerState, GoodsMetaInfoMations goodsMetaInfoMations, EnumGoodsType baseGoodsType, EnumQualityType minQuality, EnumQualityType maxQuality, int count) { PlayGoods playGoods = new PlayGoods(); Goods addGoods = goodsMetaInfoMations[baseGoodsType].Clone(true);//获取需要添加物品的原始属性 //如果是道具或炼金物品则可以叠加,但是没有品质 if (baseGoodsType > EnumGoodsType.Item && baseGoodsType < EnumGoodsType.SpecialItem) { int addGoodsID = playerState.PlayerAllGoods.Where(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType).Select(temp => temp.ID).FirstOrDefault(); if (addGoodsID == 0) { addGoodsID = NowTimeToID.GetNowID(DataCenter.Instance.GetEntity <GameRunnedState>()); playGoods = new PlayGoods(addGoodsID, addGoods, GoodsLocation.Package); playGoods.Count = count; playGoods.QualityType = EnumQualityType.White; playerState.PlayerAllGoods.Add(playGoods); } else { playGoods.Count += count; } } else { int addGoodsID = NowTimeToID.GetNowID(DataCenter.Instance.GetEntity <GameRunnedState>()); EnumQualityType qualityType = (EnumQualityType)UnityEngine.Random.Range((int)minQuality, (int)maxQuality + 1); float minRate = ((int)qualityType) * 0.2f + 0.8f; float maxRate = minRate + 0.2f; // 根据品质设置属性 if (qualityType != EnumQualityType.Red)//如果是唯一的则不用改变属性 { //将所有属性随机(根据品质) addGoods.goodsAbilities.ForEach(temp => { float min = temp.Value * minRate; float max = temp.Value * maxRate; temp.Value = (int)UnityEngine.Random.Range(min, max); }); //取出用于分割固定属性以及随机属性的条目 GoodsAbility goodsAbility_nothing = addGoods.goodsAbilities.FirstOrDefault(temp => temp.AbilibityKind == EnumGoodsAbility.Nothing); int index = -1; if (goodsAbility_nothing != null) { index = addGoods.goodsAbilities.IndexOf(goodsAbility_nothing); } //存在分割属性 if (index > -1 && index + 1 < addGoods.goodsAbilities.Count) { //取出分割项后的可变项 List <EnumGoodsAbility> randomAbilitys = Enumerable.Range(index + 1, addGoods.goodsAbilities.Count - index - 1). Select(temp => addGoods.goodsAbilities[temp]).Select(temp => temp.AbilibityKind).ToList(); int saveAbilityCount = (int)qualityType;//可保留的属性 while (randomAbilitys.Count > saveAbilityCount) { int removeIndex = UnityEngine.Random.Range(0, randomAbilitys.Count); EnumGoodsAbility removeGoodsAbility = randomAbilitys[removeIndex]; addGoods.goodsAbilities.RemoveAll(temp => temp.AbilibityKind == removeGoodsAbility); randomAbilitys.RemoveAt(removeIndex); } } addGoods.goodsAbilities.RemoveAll(temp => temp.AbilibityKind == EnumGoodsAbility.Nothing); playGoods = new PlayGoods(addGoodsID, addGoods, GoodsLocation.Package); playGoods.QualityType = qualityType; playGoods.Count = 1; playerState.PlayerAllGoods.Add(playGoods); } } return(playGoods); }
/// <summary> /// 判断是否是副手武器 /// </summary> /// <param name="enumGoodsType"></param> /// <returns></returns> public static bool IsLeftOneHandedWeapon(EnumGoodsType enumGoodsType) { return(GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Shield) || //盾牌 GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.CrystalBall)); //水晶球 }
/// <summary> /// 开始道具的功能 /// 如果是装备则替换,如果是药水则恢复 /// </summary> private void ItemAction() { if (focusUIListItem) { //物品对象 PlayGoods playGoods = (PlayGoods)focusUIListItem.value; EnumGoodsType enumGoodsType = playGoods.GoodsInfo.EnumGoodsType; int goodsTypeInt = (int)enumGoodsType; if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Equipment))//如果是装备类型则替换装备 { //如果是副手武器 if (GoodsStaticTools.IsLeftOneHandedWeapon(enumGoodsType)) { //需要判断当前是否佩戴了双手武器以及副手武器(左手武器),如果佩戴了则需要卸载双手武器 PlayGoods[] twoHandedWeapons = playerState.PlayerAllGoods.Where( temp => temp.GoodsLocation == GoodsLocation.Wearing && (GoodsStaticTools.IsTwoHandedWeapon(temp.GoodsInfo.EnumGoodsType) || (temp.leftRightArms != null && temp.leftRightArms.Value == false))).ToArray(); foreach (PlayGoods _playGoods in twoHandedWeapons) { _playGoods.leftRightArms = null; _playGoods.GoodsLocation = GoodsLocation.Package; } playGoods.leftRightArms = false; } //如果是双手武器 else if (GoodsStaticTools.IsTwoHandedWeapon(enumGoodsType)) { //需要判断当前是否佩戴了副手武器以及主手武器(右手武器),如果佩戴了则需要卸载副手武器 PlayGoods[] oneHandedWeapons = playerState.PlayerAllGoods.Where( temp => temp.GoodsLocation == GoodsLocation.Wearing && (GoodsStaticTools.IsLeftOneHandedWeapon(temp.GoodsInfo.EnumGoodsType) || (temp.leftRightArms != null && temp.leftRightArms.Value == true))).ToArray(); foreach (PlayGoods _playGoods in oneHandedWeapons) { _playGoods.leftRightArms = null; _playGoods.GoodsLocation = GoodsLocation.Package; } playGoods.leftRightArms = true; } //如果是饰品 else if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Ornaments)) { EnumGoodsType?ornamentsType = GoodsStaticTools.GetParentGoodsType(playGoods.GoodsInfo.EnumGoodsType); //从基础的饰品类型向上跳到饰品的分类类型(项链 戒指 护身符 勋章) if (ornamentsType != null && GoodsStaticTools.IsChildGoodsNode(ornamentsType.Value, EnumGoodsType.Ornaments)) { PlayGoods[] ornaments = playerState.PlayerAllGoods.Where( temp => temp.GoodsLocation == GoodsLocation.Wearing && GoodsStaticTools.IsChildGoodsNode(temp.GoodsInfo.EnumGoodsType, ornamentsType.Value)).ToArray(); foreach (PlayGoods _playGoods in ornaments) { _playGoods.GoodsLocation = GoodsLocation.Package; } } } //如果是武器(这里是单手武器,双手武器以及副手在上面已经判断过了 ) else if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Arms)) { //需要卸载所有的右手装备 PlayGoods[] rightHandedWeapons = playerState.PlayerAllGoods.Where( temp => temp.GoodsLocation == GoodsLocation.Wearing && temp.leftRightArms != null && temp.leftRightArms.Value == true).ToArray(); foreach (PlayGoods _playGoods in rightHandedWeapons) { _playGoods.leftRightArms = null; _playGoods.GoodsLocation = GoodsLocation.Package; } playGoods.leftRightArms = true; } //如果是其他装备(防具等) else { EnumGoodsType?armorType = GoodsStaticTools.GetParentGoodsType(playGoods.GoodsInfo.EnumGoodsType, 2); //从基础的防具类型向上跳到防具的大类(头盔大类 盔甲类 鞋子类) if (armorType != null && GoodsStaticTools.IsChildGoodsNode(armorType.Value, EnumGoodsType.Equipment)) { PlayGoods[] ammors = playerState.PlayerAllGoods.Where( temp => temp.GoodsLocation == GoodsLocation.Wearing && GoodsStaticTools.IsChildGoodsNode(temp.GoodsInfo.EnumGoodsType, armorType.Value)).ToArray(); foreach (PlayGoods _playGoods in ammors) { _playGoods.GoodsLocation = GoodsLocation.Package; } } } playGoods.GoodsLocation = GoodsLocation.Wearing; iPlayerStateRun.EquipmentChanged = true; } else if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Elixir))//如果是炼金药剂类则直接服用 { iPlayerStateRun.EatMedicine(playGoods.ID); } else if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Item)) //如果是道具 { if (enumGoodsType == EnumGoodsType.MagicScroll) //此处的魔法卷轴有一个任务的特殊检测 { INowTaskState iNowTaskState = GameState.Instance.GetEntity <INowTaskState>(); iNowTaskState.CheckNowTask(EnumCheckTaskType.Special, (int)TaskMap.Enums.EnumTaskSpecialCheck.SummonsScrollMagic); } Debug.Log("道具功能暂未实现"); } } }