当前位置: 首页 > news >正文

福州网站建设推广平台dede网站版权信息修改

福州网站建设推广平台,dede网站版权信息修改,网站发布新闻的好处 seo,网站建设的用户名和密码代码基于“RPG项目01_技能释放”#xff0c;将UI包导入Unity场景中#xff0c; 将图片放置 拖拽 取消勾选#xff08;隐藏攻击切片#xff09; 对技能添加蒙版 调节父子物体大小一致 将子类蒙版复制 执行5次 运行即可看到技能使用完的冷却条 在Scripts下创建UI文件夹 写代码将UI包导入Unity场景中 将图片放置 拖拽 取消勾选隐藏攻击切片 对技能添加蒙版 调节父子物体大小一致 将子类蒙版复制 执行5次 运行即可看到技能使用完的冷却条 在Scripts下创建UI文件夹 写代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; public class UIBase : MonoBehaviour {     public Transform btnParent;     public GameObject prefab;     public UnityActionint funClickHandle;     public UITween tween;     protected ListRectTransform childRect new ListRectTransform();     protected Button btnBack;     protected Text text; protected void Init()     {         tween GetComponentUITween();         btnBack GameManager.FindTypeButton(transform, BtnX);         btnBack.onClick.AddListener(tween.UIBack);     }     protected void ClearBtn(Transform parent) {         foreach (Transform t in parent) {             Destroy(t.gameObject);         }     }     public virtual void UpdateValue() {          }     public virtual void MenuStart(params UITween[] uis) {         foreach (UITween item in uis) {              item.UIStart();         }     } } 再UI文件夹下创建PlayerPanel代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PlayerPanel : UIBase {     [Header(子类变量)]     public UIBase panelMsn;     public UIBase panelBag;     Button btnMsn;     Button btnBag;     static Image hpImage;     static Image mpImage;     void Start()     {         hpImage GameManager.FindTypeImage(transform, MainUI/Hp);         mpImage GameManager.FindTypeImage(transform, MainUI/Mp);         btnMsn GameManager.FindTypeButton(transform, BtnMission);         btnBag GameManager.FindTypeButton(transform             , BtnBag);         btnMsn.onClick.AddListener(delegate         {             panelMsn.MenuStart(panelMsn.GetComponentUITween());         });         btnBag.onClick.AddListener(delegate         {             //获取全部挂在UITween脚本的组件形成数组不定参数             panelBag.MenuStart(panelBag.GetComponentsInChildrenUITween());         });         for (int i 0; i btnParent.childCount; i)         {             Button btn GameManager.FindTypeButton(btnParent, BtnSkill i);             int n i;             btn.onClick.AddListener(delegate {                 MainGame.player.SkillClick(n 1);             });         }     } //刷新血量     public static void UpdateHpUI(float hpValue, float mpValue)     {         hpImage.fillAmount hpValue;         mpImage.fillAmount mpValue;     } } 将PalyerPanel挂载在MainPanel上 新增MaPlayer代码 protected override void UpdateUI()     {         PlayerPanel.UpdateHpUI(GetHpRation(), (float)Mp/MpMax);     } 将初始mp/最大mp调少一点 运行E拔刀后F1释放技能即可看到mp蓝条减少 添加代码 public void SkillClick(int num)     {         if (!Anim.GetCurrentAnimatorStateInfo(0).IsName(Idle_Fight))         {             return;         }         SkillBase skill skills[num];         if (!skill.MayRelease())         {             return;         }         Anim.SetTrigger(CSkill num);         ReleaseSkill(skill);     } 选中技能1-6添加Button组件 新增PlayerPanel代码找到按钮 点击技能释放技能缺少button事件 加入新按钮 删除旧按钮 新增两个到Bag包下 删除两个 delete 挪动Text位置 复制道具框 在Content上增加尺寸适配器组件自动计算通常和Grid Layout Group配合使用 设置自动隐藏当需要滚动条的时候显示不需要时隐藏 此时两侧面板基本完成 新建代码BagPanel 代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class BagPanel : UIBase{     Transform canvas;     Transform bagTran;     Transform equipTran;     Button btnTakeOff;     Text textHp;     Text textMp;     Text textLv;     Text textExp;     Text textAtt;     Text textDef;     Text textSpd;     Text textMdf;     private void Start(){       }     public void InitText(){         canvas MainGame.canvas;         bagTran transform.Find(Bag);         equipTran transform.Find(Equip);         text GameManager.FindTypeText(bagTran, TextGold);         Transform temp equipTran.Find(TextParent);         textHp GameManager.FindTypeText(temp, TextHp);         textMp GameManager.FindTypeText(temp, TextMp);         textLv GameManager.FindTypeText(temp, TextLv);         textExp GameManager.FindTypeText(temp, TextExp);         textAtt GameManager.FindTypeText(temp, TextAtt);         textDef GameManager.FindTypeText(temp, TextDef);         textSpd GameManager.FindTypeText(temp, TextSpd);         textMdf GameManager.FindTypeText(temp, TextMdf);     } } 新增MainPanel代码类段代码 Message.CheckMessage(); 修改Text为TextGold 在Canvas下创建Image 选一张图片 添加组件 添加组件 添加事件类型 再做一下鼠标移动到图标就会消失功能 鼠标到图标位置图标就会消失 知识点如果用Selectable和Event Trigger就可以替代Button按钮做更复杂的UI 新建脚本道具类GameObj using System; using System.Collections; using System.Collections.Generic; using UnityEngine; //药品装备 public enum ObjType { None, Drug, Equip }; //装备包含 public enum EquipType { None, Helmet, Armor, Boots, Weapon, Shield }; //装备数据 public class GameObj{     public string oname;     public string msg;     public int idx;     public string type;     public int _hp;     public int _mp;     public int _def;     public int _mdf;     public int _att;     public int _spd;     public bool isTakeOn;//判断是否穿上     public virtual void UseObjValue(){ }     public virtual void TakeOff(){ }     public virtual void TakeOn(){ } } 修改BagPanel代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.InputSystem; using UnityEngine.UI; public class BagPanel : UIBase{     Transform canvas;     Transform bagTran;     Transform equipTran;     Button btnTakeOff;     Text textHp;     Text textMp;     Text textLv;     Text textExp;     Text textAtt;     Text textDef;     Text textSpd;     Text textMdf;     void Start(){       }     public void InitText(){         canvas MainGame.canvas;         bagTran transform.Find(Bag);         equipTran transform.Find(Equip);         text GameManager.FindTypeText(bagTran, TextGold);         Transform temp equipTran.Find(TextParent);         textHp GameManager.FindTypeText(temp, TextHp);         textMp GameManager.FindTypeText(temp, TextMp);         textLv GameManager.FindTypeText(temp, TextLv);         textExp GameManager.FindTypeText(temp, TextExp);         textAtt GameManager.FindTypeText(temp, TextAtt);         textDef GameManager.FindTypeText(temp, TextDef);         textSpd GameManager.FindTypeText(temp, TextSpd);         textMdf GameManager.FindTypeText(temp, TextMdf);     }     void AddEvent(GameObj obj, GameObject btn)     {         Image image btn.GetComponentImage();         EventTrigger et btn.GetComponentEventTrigger();         if (!et)         {             et btn.AddComponentEventTrigger();         }         EventTrigger.Entry entry new EventTrigger.Entry();         entry.eventID EventTriggerType.BeginDrag;//开始拖拽         entry.callback.AddListener(delegate         {             image.raycastTarget false;             btn.transform.SetParent(canvas);         }         );         et.triggers.Add(entry);         //         entry new EventTrigger.Entry();         entry.eventID EventTriggerType.Drag;//拖拽中         entry.callback.AddListener(delegate (BaseEventData arg)         {             PointerEventData ped (PointerEventData)arg;//将基础数据变成鼠标数据             Vector3 newPos;             RectTransformUtility.ScreenPointToWorldPointInRectangle(                 btn.GetComponentRectTransform(), Mouse.current.position.ReadValue(),//在摄像机视角下鼠标当前坐标转换过去                 ped.enterEventCamera, out newPos);             btn.transform.position newPos;         }         );         et.triggers.Add(entry);         /;         entry new EventTrigger.Entry();         entry.eventID EventTriggerType.EndDrag;//结束拖拽         entry.callback.AddListener(delegate (BaseEventData arg)         {             if (!EventSystem.current.IsPointerOverGameObject())             {                 btn.transform.parent btnParent;                 image.raycastTarget true;                 return;             }             PointerEventData ped (PointerEventData)arg;             Transform target ped.pointerEnter.transform;             if (target)             {                 if (target.tag obj.GetType().ToString())                 {                     obj.TakeOn();                     //交换装备                     ChangeGameObj(target.parent, btn);                     //刷新数值                     UpdatePlayerValue();                 }                 else if (target.name obj.GetType().ToString() || target.name obj.type)                 {                     //交换药品                     ChangeGameObj(target, btn);                 }                 else                 {                     obj.isTakeOn false;                     btn.transform.parent btnParent;                 }             }             image.raycastTarget true;         }         );         et.triggers.Add(entry);         /         entry new EventTrigger.Entry();         entry.eventID EventTriggerType.PointerClick;//拖拽中         entry.callback.AddListener(delegate (BaseEventData arg)         {             if (btn.tag ! ObjType.Drug.ToString())             {                 return;             }             //MainGame.player.UseDrugObj(btn.transform);         }         );         et.triggers.Add(entry);     }     //刷新玩家数据     public void UpdatePlayerValue()     {         textHp.text 生命: MainGame.player.Hp / MainGame.player.HpMax;         textMp.text 魔力: MainGame.player.Mp / MainGame.player.MpMax;         textAtt.text 攻击: MainGame.player.Att;         textDef.text 防御: MainGame.player.Def;         textMdf.text 魔抗: MainGame.player.Mdf;         textSpd.text 速度: MainGame.player.Spd;         textLv.text 等级: MainGame.player.lv;         textExp.text 经验: MainGame.player.Exp;     }     void ChangeGameObj(Transform target, GameObject btn)     {         GameObj temp new GameObj();         if (target.childCount 2)         {             //temp GameManager.GetGameObj(target.GetChild(0).name);             //SetBtnTakeOff(target.GetChild(0), temp);         }         btn.transform.parent target.transform;         btn.transform.SetAsFirstSibling();         btn.transform.localPosition Vector3.zero;         btn.GetComponentRectTransform().sizeDelta target.GetComponentRectTransform().sizeDelta;         //temp GameManager.GetGameObj(btn.name);         if (temp ! null)         {             temp.isTakeOn true;         } }     void SetBtnTakeOff(Transform btn, GameObj obj)     {         if (obj ! null)         {             btn.parent btnParent;             obj.isTakeOn false;             btn.GetComponentImage().raycastTarget true;         }     } } 修改GameManager类 using System.Collections.Generic; using System.Xml; using Unity.VisualScripting; using UnityEngine; public enum GameState { Play,Menu }; public class GameManager {     //当只需要一个的时候使用静态类     public static GameState gameState GameState.Play;     //物品库     public static Dictionarystring, GameObj goods new Dictionarystring, GameObj();     public static void Init()     { }     public static T FindTypeT(Transform t, string n)     {         return t.Find(n).GetComponentT();     }     public static T ParseEnumT(string value)     {         return (T)System.Enum.Parse(typeof(T), value, true);     }     #region 添加物品库     //读取XML文件     public static void SetGoods()     {         TextAsset t LoadManager.LoadXml(XML);         XmlDocument xml new XmlDocument();         xml.LoadXml(t.ToString().Trim());         XmlElement root xml.DocumentElement;         XmlElement oInfo (XmlElement)root.SelectSingleNode(DrugInfo);         //节点列表 获取所有子节点         XmlNodeList nodeList oInfo.ChildNodes;         foreach (XmlElement item in nodeList)         {             //Drug drug new Drug();             //drug.oname item.GetAttribute(Name);             //drug.msg item.GetAttribute(Msg);             //drug.idx int.Parse(item.GetAttribute(Idx));             //drug.type item.GetAttribute(Type);             //drug._hp int.Parse(item.GetAttribute(Hp));             //drug._mp int.Parse(item.GetAttribute(Mp));             //AddGoodDict(drug);         }                 //    oInfo (XmlElement)root.SelectSingleNode(EquipInfo);         //    nodeList oInfo.ChildNodes;//每一个节点         //    foreach (XmlElement item in nodeList)         //    {         //        Equip eq new Equip();         //        eq.oname item.GetAttribute(Name);         //        eq.msg item.GetAttribute(Msg);         //        eq.idx int.Parse(item.GetAttribute(Idx));         //        eq.type item.GetAttribute(Type);         //        eq._att int.Parse(item.GetAttribute(Att));         //        eq._def int.Parse(item.GetAttribute(Def));         //        eq._mdf int.Parse(item.GetAttribute(Mdf));         //        eq._spd int.Parse(item.GetAttribute(Spd));         //        AddGoodDict(eq);         //    }         //}         //public static void AddGoodDict(GameObj obj)         //{         //    if (obj null)         //    {         //        return;         //    }         //    goods.Add(obj.oname, obj);         //}         //public static GameObj GetGameObj(string name)         //{         //    if (goods.ContainsKey(name))         //    {         //        return goods[name];         //    }         //    else         //    {         //        return null;         //    }         //}         //public static GameObj GetGameObj(int idx)         //{         //    foreach (GameObj item in goods.Values)         //    {         //        if (item.idx idx)         //        {         //            return item;         //        }         //    }         //    return null;         //}         #endregion     } } 新建脚本药品类Drug 代码 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Drug : GameObj {     public override void UseObjValue()     {         MainGame.player.AddHp(_hp);         MainGame.player.AddMp(_mp);     } } 继续修改GameManager代码 using System.Collections.Generic; using System.Xml; using Unity.VisualScripting; using UnityEngine; public enum GameState { Play,Menu }; public class GameManager {     //当只需要一个的时候使用静态类     public static GameState gameState GameState.Play;     //物品库     public static Dictionarystring, GameObj goods new Dictionarystring, GameObj();     public static void Init()     { }     public static T FindTypeT(Transform t, string n)     {         return t.Find(n).GetComponentT();     }     public static T ParseEnumT(string value)     {         return (T)System.Enum.Parse(typeof(T), value, true);     }     #region 添加物品库     //读取XML文件     public static void SetGoods()     {         TextAsset t LoadManager.LoadXml(XML);         XmlDocument xml new XmlDocument();         xml.LoadXml(t.ToString().Trim());         XmlElement root xml.DocumentElement;         XmlElement oInfo (XmlElement)root.SelectSingleNode(DrugInfo);         //节点列表 获取所有子节点         XmlNodeList nodeList oInfo.ChildNodes;         foreach (XmlElement item in nodeList)         {             Drug drug new Drug();             drug.oname item.GetAttribute(Name);             drug.msg item.GetAttribute(Msg);             drug.idx int.Parse(item.GetAttribute(Idx));             drug.type item.GetAttribute(Type);             drug._hp int.Parse(item.GetAttribute(Hp));             drug._mp int.Parse(item.GetAttribute(Mp));             AddGoodDict(drug);         }                 //oInfo (XmlElement)root.SelectSingleNode(EquipInfo);         //nodeList oInfo.ChildNodes;//每一个节点         //foreach (XmlElement item in nodeList)         //{         //    Equip eq new Equip();         //    eq.oname item.GetAttribute(Name);         //    eq.msg item.GetAttribute(Msg);         //    eq.idx int.Parse(item.GetAttribute(Idx));         //    eq.type item.GetAttribute(Type);         //    eq._att int.Parse(item.GetAttribute(Att));         //    eq._def int.Parse(item.GetAttribute(Def));         //    eq._mdf int.Parse(item.GetAttribute(Mdf));         //    eq._spd int.Parse(item.GetAttribute(Spd));         //    AddGoodDict(eq);         //}     }     public static void AddGoodDict(GameObj obj)         {             if (obj null)             {                 return;             }             goods.Add(obj.oname, obj);         }         //public static GameObj GetGameObj(string name)         //{         //    if (goods.ContainsKey(name))         //    {         //        return goods[name];         //    }         //    else         //    {         //        return null;         //    }         //}         //public static GameObj GetGameObj(int idx)         //{         //    foreach (GameObj item in goods.Values)         //    {         //        if (item.idx idx)         //        {         //            return item;         //        }         //    }         //    return null;         //}         #endregion      } 再创建Equip道具类 代码 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Equip : GameObj {     public override void TakeOff()     {         //     } } 继续修改GameManager类 using System.Collections.Generic; using System.Xml; using Unity.VisualScripting; using UnityEngine; public enum GameState { Play,Menu }; public class GameManager {     //当只需要一个的时候使用静态类     public static GameState gameState GameState.Play;     //物品库     public static Dictionarystring, GameObj goods new Dictionarystring, GameObj();     public static void Init()     {         SetGoods();     }     public static T FindTypeT(Transform t, string n)     {         return t.Find(n).GetComponentT();     }     public static T ParseEnumT(string value)     {         return (T)System.Enum.Parse(typeof(T), value, true);     }     #region 添加物品库     //读取XML文件     public static void SetGoods()     {         TextAsset t LoadManager.LoadXml(XML);         XmlDocument xml new XmlDocument();         xml.LoadXml(t.ToString().Trim());         XmlElement root xml.DocumentElement;         XmlElement oInfo (XmlElement)root.SelectSingleNode(DrugInfo);         //节点列表 获取所有子节点         XmlNodeList nodeList oInfo.ChildNodes;         foreach (XmlElement item in nodeList)         {             Drug drug new Drug();             drug.oname item.GetAttribute(Name);             drug.msg item.GetAttribute(Msg);             drug.idx int.Parse(item.GetAttribute(Idx));             drug.type item.GetAttribute(Type);             drug._hp int.Parse(item.GetAttribute(Hp));             drug._mp int.Parse(item.GetAttribute(Mp));             AddGoodDict(drug);         }                 oInfo (XmlElement)root.SelectSingleNode(EquipInfo);         //节点列表 获取所有子节点         nodeList oInfo.ChildNodes;         foreach (XmlElement item in nodeList)         {             //alt 回车 一键全改错误eq             Equip eqq new Equip();             eqq.oname item.GetAttribute(Name);             eqq.msg item.GetAttribute(Msg);             eqq.idx int.Parse(item.GetAttribute(Idx));             eqq.type item.GetAttribute(Type);             eqq._att int.Parse(item.GetAttribute(Att));             eqq._def int.Parse(item.GetAttribute(Def));             eqq._mdf int.Parse(item.GetAttribute(Mdf));             eqq._spd int.Parse(item.GetAttribute(Spd));             AddGoodDict(eqq);         }     }     public static void AddGoodDict(GameObj obj)         {             if (obj null)             {                 return;             }             goods.Add(obj.oname, obj);         }     public static GameObj GetGameObj(string name)     {         if (goods.ContainsKey(name))         {             return goods[name];         }         else         {             return null;         }     }     public static GameObj GetGameObj(int idx)     {         foreach (GameObj item in goods.Values)         {             if (item.idx idx)             {                 return item;             }         }         return null;     }     #endregion } 修改BagPanel类 修改背包面板BagPanel代码在Start下加内容 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.InputSystem; using UnityEngine.UI; public class BagPanel : UIBase{     Transform canvas;     Transform bagTran;     Transform equipTran;     Button btnTakeOff;     Text textHp;     Text textMp;     Text textLv;     Text textExp;     Text textAtt;     Text textDef;     Text textSpd;     Text textMdf;     void Start(){         InitText();         btnTakeOff GameManager.FindTypeButton(equipTran, BtnTakeOff);         btnTakeOff.onClick.AddListener(delegate         {             foreach (Transform item in equipTran.Find(Eq))             {                 if (item.childCount 2)                 {                     GameObj temp GameManager.GetGameObj(item.GetChild(0).name);                     temp.TakeOff();                     UpdatePlayerValue();                     SetBtnTakeOff(item.GetChild(0), temp);                 }             }         });         tween bagTran.GetComponentUITween();         tween.AddEventStartHandle(UpdateValue);         btnBack GameManager.FindTypeButton(bagTran, BtnX);         btnBack.onClick.AddListener(delegate         {             tween.UIBack();             equipTran.GetComponentUITween().UIBack();         });     }     public void InitText(){         canvas MainGame.canvas;         bagTran transform.Find(Bag);         equipTran transform.Find(Equip);         text GameManager.FindTypeText(bagTran, TextGold);         Transform temp equipTran.Find(TextParent);         textHp GameManager.FindTypeText(temp, TextHp);         textMp GameManager.FindTypeText(temp, TextMp);         textLv GameManager.FindTypeText(temp, TextLv);         textExp GameManager.FindTypeText(temp, TextExp);         textAtt GameManager.FindTypeText(temp, TextAtt);         textDef GameManager.FindTypeText(temp, TextDef);         textSpd GameManager.FindTypeText(temp, TextSpd);         textMdf GameManager.FindTypeText(temp, TextMdf);     }     void AddEvent(GameObj obj, GameObject btn)     {         Image image btn.GetComponentImage();         EventTrigger et btn.GetComponentEventTrigger();         if (!et)         {             et btn.AddComponentEventTrigger();         }         EventTrigger.Entry entry new EventTrigger.Entry();         entry.eventID EventTriggerType.BeginDrag;//开始拖拽         entry.callback.AddListener(delegate         {             image.raycastTarget false;             btn.transform.SetParent(canvas);         }         );         et.triggers.Add(entry);         //         entry new EventTrigger.Entry();         entry.eventID EventTriggerType.Drag;//拖拽中         entry.callback.AddListener(delegate (BaseEventData arg)         {             PointerEventData ped (PointerEventData)arg;//将基础数据变成鼠标数据             Vector3 newPos;             RectTransformUtility.ScreenPointToWorldPointInRectangle(                 btn.GetComponentRectTransform(), Mouse.current.position.ReadValue(),//在摄像机视角下鼠标当前坐标转换过去                 ped.enterEventCamera, out newPos);             btn.transform.position newPos;         }         );         et.triggers.Add(entry);         /;         entry new EventTrigger.Entry();         entry.eventID EventTriggerType.EndDrag;//结束拖拽         entry.callback.AddListener(delegate (BaseEventData arg)         {             if (!EventSystem.current.IsPointerOverGameObject())             {                 btn.transform.parent btnParent;                 image.raycastTarget true;                 return;             }             PointerEventData ped (PointerEventData)arg;             Transform target ped.pointerEnter.transform;             if (target)             {                 if (target.tag obj.GetType().ToString())                 {                     obj.TakeOn();                     //交换装备                     ChangeGameObj(target.parent, btn);                     //刷新数值                     UpdatePlayerValue();                 }                 else if (target.name obj.GetType().ToString() || target.name obj.type)                 {                     //交换药品                     ChangeGameObj(target, btn);                 }                 else                 {                     obj.isTakeOn false;                     btn.transform.parent btnParent;                 }             }             image.raycastTarget true;         }         );         et.triggers.Add(entry);         /         entry new EventTrigger.Entry();         entry.eventID EventTriggerType.PointerClick;//拖拽中         entry.callback.AddListener(delegate (BaseEventData arg)         {             if (btn.tag ! ObjType.Drug.ToString())             {                 return;             }             //MainGame.player.UseDrugObj(btn.transform);         }         );         et.triggers.Add(entry);     }     //刷新玩家数据     public void UpdatePlayerValue()     {         textHp.text 生命: MainGame.player.Hp / MainGame.player.HpMax;         textMp.text 魔力: MainGame.player.Mp / MainGame.player.MpMax;         textAtt.text 攻击: MainGame.player.Att;         textDef.text 防御: MainGame.player.Def;         textMdf.text 魔抗: MainGame.player.Mdf;         textSpd.text 速度: MainGame.player.Spd;         textLv.text 等级: MainGame.player.lv;         textExp.text 经验: MainGame.player.Exp;     }     void ChangeGameObj(Transform target, GameObject btn)     {         GameObj temp new GameObj();         if (target.childCount 2)         {             temp GameManager.GetGameObj(target.GetChild(0).name);             SetBtnTakeOff(target.GetChild(0), temp);         }         btn.transform.parent target.transform;         btn.transform.SetAsFirstSibling();         btn.transform.localPosition Vector3.zero;         btn.GetComponentRectTransform().sizeDelta target.GetComponentRectTransform().sizeDelta;         temp GameManager.GetGameObj(btn.name);         if (temp ! null)         {             temp.isTakeOn true;         } }     void SetBtnTakeOff(Transform btn, GameObj obj)     {         if (obj ! null)         {             btn.parent btnParent;             obj.isTakeOn false;             btn.GetComponentImage().raycastTarget true;         }     } } 新增BagPanel代码 public override void UpdateValue()     {         ClearBtn(btnParent);         //暂时写不了需要新增MyPlayer代码的函数     } 新增MyPlayer代码 添加一个方法 修改MyPlayer代码利用xml文档的函数添加两个道具 using System; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.InputSystem; using UnityEngine.UI; public class MyPlayer : People { [Header(子类变量)]     public Transform toolPanel;//道具面板     public Transform skillPanel;//技能面板     public BagPanel bag;//包 CharacterController contro;     Controls action; float rvalue;     float spdFast 1;     bool isHold;//握住刀     GameObject sword;     GameObject swordBack;     public Image imageHp;     public Image imageMp;     //bagTools 背包工具     DictionaryGameObj, int bagTools new DictionaryGameObj, int();     DictionaryEquipType, Equip equips new DictionaryEquipType, Equip();     void Start()     {         //base.Start();         InitValue();         InitSkill();         //获取自身角色控制器         contro GetComponentCharacterController();         SetInput();         sword transform.Find(Sword_Hand).gameObject;         swordBack transform.Find(Sword_Back).gameObject;         bag.InitText();         // AddTool(GameManager.GetGameObj(大还丹), 5);         //3.5.7.6是xml文档里的道具数字是编号         //作用是利用xml文档里添加两个道具         AddTool(GameManager.GetGameObj(3), 5);         AddTool(GameManager.GetGameObj(7), 6);     }     void Update()     {         if (GameManager.gameState ! GameState.Play)         {             return;         }         Ctrl();         UpdateSkillTime();     }     void SetInput()     {         action new Controls();         action.Enable();         action.MyCtrl.Move.started Move;         action.MyCtrl.Move.performed Move;         action.MyCtrl.Move.canceled StopMove;         action.MyCtrl.Jump.started Jump;         action.MyCtrl.Rotate.started Rotate;         action.MyCtrl.Rotate.performed Rotate;         action.MyCtrl.Fast.started FastSpeed;         action.MyCtrl.Fast.performed FastSpeed;         action.MyCtrl.Fast.canceled FastSpeed;         action.MyCtrl.GetTool.started ClickNpcAndTool;         action.MyCtrl.HoldRotate.performed Hold;         action.MyCtrl.HoldRotate.canceled Hold;         action.MyAtt.Att.started Attack;         action.MyAtt.SwordOut.started SwordOut;         action.Skill.F1.started SkillAtt;         action.Skill.F2.started SkillAtt;         action.Skill.F3.started SkillAtt;         action.Skill.F4.started SkillAtt;         action.Skill.F5.started SkillAtt;         action.Skill.F6.started SkillAtt;        // action.Tools._1.started GetkeyClick;        // action.Tools._2.started GetkeyClick;        // action.Tools._3.started GetkeyClick;       //  action.Tools._4.started GetkeyClick;         //action.Tools._5.started GetkeyClick;         //action.Tools._6.started GetkeyClick;         //action.Tools._7.started GetkeyClick;         //action.Tools._8.started GetkeyClick;     } private void GetkeyClick(InputAction.CallbackContext context)     {         string[] str context.control.ToString().Split(/);         int num int.Parse(str[2]) - 1;      // UseObj(num);     } private void SwordOut(InputAction.CallbackContext context)     {         if (GameManager.gameState ! GameState.Play)         {             return;         }         Anim.SetBool(SwordOut, !Anim.GetBool(SwordOut));     }     #region 攻击     void SetSwordVisible(int n)     {         sword.SetActive(n ! 0);         swordBack.SetActive(n 0);     }     private void Attack(InputAction.CallbackContext context)     {         if (GameManager.gameState ! GameState.Play)         {             return;         }         if (EventSystem.current.IsPointerOverGameObject())         {             return;         }         if (Anim.GetCurrentAnimatorStateInfo(0).IsName(Idle_Fight))         {             Anim.SetInteger(Att, 1);             Anim.SetTrigger(AttTrigger); }         else         {             int num Anim.GetInteger(Att);             if (num 6)             {                 return;             }             if (Anim.GetCurrentAnimatorStateInfo(0).IsName(Light_Attk_ num))             {                 Anim.SetInteger(Att, num 1);             }         }     }     public void PlayerAttack(string hurt)     {         Collider[] cs Physics.OverlapBox(attPoint.position, Vector3.one * 0.5f,             attPoint.rotation, LayerMask.GetMask(Enemy));         if (cs.Length 0)         {             return;         }         int value (int)(Att * Anim.GetInteger(Att) * 0.5f);         foreach (Collider c in cs)         {             print(value);         }     } public void PlayerAttackHard(string hurt)     {         Collider[] cs Physics.OverlapBox(attPoint.position, Vector3.one * 0.5f,               attPoint.rotation, LayerMask.GetMask(Enemy));         if (cs.Length 0)         {             return;         }         int value (int)(Att * Anim.GetInteger(Att) * 0.5f);         foreach (Collider c in cs)         {             print(value);             print(让敌人播放击倒特效);         }     }     #endregion #region 人物控制     void Ctrl()     {         if (Anim.GetCurrentAnimatorStateInfo(0).IsName(Run) || Anim.GetCurrentAnimatorStateInfo(0).IsName(Run_Inplace) || Anim.GetCurrentAnimatorStateInfo(0).IsName(Idle)             || Anim.GetCurrentAnimatorStateInfo(0).IsName(Idle_Fight))         {             float f action.MyCtrl.Move.ReadValuefloat();             contro.Move(transform.forward * f * Time.deltaTime * spdFast * Spd);             contro.Move(transform.up * -9.8f * Time.deltaTime);             if (isHold)             {                 transform.Rotate(transform.up * rvalue * 0.3f);             } }     }     private void Hold(InputAction.CallbackContext context)     {         if (GameManager.gameState ! GameState.Play)         {             return;         }         if (context.phase InputActionPhase.Canceled)         {             isHold false;         }         else         {             isHold true;         }     }     private void ClickNpcAndTool(InputAction.CallbackContext context)     {         //throw new NotImplementedException();     } private void FastSpeed(InputAction.CallbackContext context)     {         if (GameManager.gameState ! GameState.Play)         {             return;         }         if (Anim.GetCurrentAnimatorStateInfo(0).IsName(Run) || Anim.GetCurrentAnimatorStateInfo(0).IsName(Run_Inplace))         {             if (context.phase InputActionPhase.Canceled)             {                 spdFast 1;             }             else             {                 spdFast 2;             }         }     } private void Rotate(InputAction.CallbackContext context)     {         if (GameManager.gameState ! GameState.Play)         {             return;         }         rvalue context.ReadValuefloat();     } private void Jump(InputAction.CallbackContext context)     {         if (GameManager.gameState ! GameState.Play)         {             return;         }         Anim.SetTrigger(Jump);     } private void StopMove(InputAction.CallbackContext context)     {         Anim.SetBool(IsRun, false);     } private void Move(InputAction.CallbackContext context)     {         if (GameManager.gameState ! GameState.Play)         {             return;         }         Anim.SetBool(IsRun, true);     } #endregion #region 技能     protected override void InitSkill()     {         SphereSkill thunderBombCut new SphereSkill(this, 雷爆斩, SkillType.Magic, 3, Att * 10, -100, 20, 0.3f, 0);         skills.Add(1, thunderBombCut); SphereSkill windCircleCut new SphereSkill(this, 旋风斩, SkillType.Physics, 3, Att * 8, -50, 20, 0.2f, 0);         skills.Add(2, windCircleCut); StraightSkill thunderLightCut new StraightSkill(this, 雷光斩, SkillType.Physics, 7, 0.5f, Att * 7, -50, 20, 0.2f, 0);         skills.Add(3, thunderLightCut); SphereSkill oneCut new SphereSkill(this, 归一斩, SkillType.Physics, 7, Att * 7, -30, 8, 0.2f, 0);         skills.Add(4, oneCut); StraightSkill crossCut new StraightSkill(this, 十字斩, SkillType.Physics, 25, 0.5f, Att * 3, -40, 20, 0.2f, 0);         skills.Add(5, crossCut); SphereSkill thunderLargeCut new SphereSkill(this, 轰雷斩, SkillType.Magic, 7, Att * 15, -120, 25, 0.35f, 0);         skills.Add(6, thunderLargeCut);     }     private void SkillAtt(InputAction.CallbackContext context)     {         if (!Anim.GetCurrentAnimatorStateInfo(0).IsName(Idle_Fight))         {             return;         }         string[] str context.control.ToString().Split(/);         int num int.Parse(str[2][1].ToString());         SkillBase skill skills[num];         if (!skill.MayRelease())         {             return;         }         Anim.SetTrigger(CSkill num);         ReleaseSkill(skill);     } public void SkillClick(int num)     {         if (!Anim.GetCurrentAnimatorStateInfo(0).IsName(Idle_Fight))         {             return;         }         SkillBase skill skills[num];         if (!skill.MayRelease())         {             return;         }         Anim.SetTrigger(CSkill num);         ReleaseSkill(skill);     } void UpdateSkillTime()     {         for (int i 0; i skillPanel.childCount; i)         {             if (skills[i 1].IsRelease)             {                 continue;             }             Image image skillPanel.GetChild(i).GetChild(0).GetComponentImage();             image.fillAmount skills[i 1].GetFillTime();         }     }     #endregion protected override void UpdateUI()     {         PlayerPanel.UpdateHpUI(GetHpRation(), (float)Mp/MpMax);     } #region 物品道具     public DictionaryGameObj, int GetTools()     {         return bagTools;     }     public void AddTool(GameObj gObj, int num)     {         if (gObj null)         {             return;         }         GameObj temp GameManager.GetGameObj(gObj.oname);         if (bagTools.ContainsKey(temp))         {             bagTools[temp] num;         }         else         {             // bagTools[temp] num;             bagTools.Add(gObj, num);         }         bag.UpdateValue();     }     //public void UseDrugObj(Transform t)     //{     //    GameObj obj GameManager.GetGameObj(t.name);     //    obj.UseObjValue();     //    bag.UpdatePlayerValue();     //    bagTools[obj]--;     //    t.GetComponentInChildrenText().text bagTools[obj].ToString();     //    if (bagTools[obj] 0)     //    {     //        bagTools.Remove(obj);     //        Destroy(t.gameObject);     //    }     //}     //private void UseObj(int num)     //{     //    Transform temp toolPanel.GetChild(num);     //    if (temp.childCount 2)     //    {     //        return;     //    }     //    Transform t temp.GetChild(0);     //    UseDrugObj(t);     //}     #endregion } 再次修改BagPanel代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.InputSystem; using UnityEngine.UI; public class BagPanel : UIBase{     Transform canvas;     Transform bagTran;     Transform equipTran;     Button btnTakeOff;     Text textHp;     Text textMp;     Text textLv;     Text textExp;     Text textAtt;     Text textDef;     Text textSpd;     Text textMdf;     void Start(){         InitText();         btnTakeOff GameManager.FindTypeButton(equipTran, BtnTakeOff);         btnTakeOff.onClick.AddListener(delegate         {             foreach (Transform item in equipTran.Find(Eq))             {                 if (item.childCount 2)                 {                     GameObj temp GameManager.GetGameObj(item.GetChild(0).name);                     temp.TakeOff();                     UpdatePlayerValue();                     SetBtnTakeOff(item.GetChild(0), temp);                 }             }         });         tween bagTran.GetComponentUITween();         tween.AddEventStartHandle(UpdateValue);         btnBack GameManager.FindTypeButton(bagTran, BtnX);         btnBack.onClick.AddListener(delegate         {             tween.UIBack();             equipTran.GetComponentUITween().UIBack();         });     }     public override void UpdateValue()     {         ClearBtn(btnParent);         DictionaryGameObj, int.KeyCollection keys MainGame.player.GetTools().Keys;         foreach (GameObj item in keys)         {             if (item.isTakeOn)             {                 continue;             } GameObject btn Instantiate(prefab, btnParent);             btn.GetComponentImage().sprite LoadManager.LoadSprite(Obj/ item.oname);             btn.name item.oname;             btn.tag item.GetType().ToString();             btn.GetComponentInChildrenText().text MainGame.player.GetTools()[item].ToString();             AddEvent(item, btn);         }     }     public void InitText(){         canvas MainGame.canvas;         bagTran transform.Find(Bag);         equipTran transform.Find(Equip);         text GameManager.FindTypeText(bagTran, TextGold);         Transform temp equipTran.Find(TextParent);         textHp GameManager.FindTypeText(temp, TextHp);         textMp GameManager.FindTypeText(temp, TextMp);         textLv GameManager.FindTypeText(temp, TextLv);         textExp GameManager.FindTypeText(temp, TextExp);         textAtt GameManager.FindTypeText(temp, TextAtt);         textDef GameManager.FindTypeText(temp, TextDef);         textSpd GameManager.FindTypeText(temp, TextSpd);         textMdf GameManager.FindTypeText(temp, TextMdf);     }     void AddEvent(GameObj obj, GameObject btn)     {         Image image btn.GetComponentImage();         EventTrigger et btn.GetComponentEventTrigger();         if (!et)         {             et btn.AddComponentEventTrigger();         }         EventTrigger.Entry entry new EventTrigger.Entry();         entry.eventID EventTriggerType.BeginDrag;//开始拖拽         entry.callback.AddListener(delegate         {             image.raycastTarget false;             btn.transform.SetParent(canvas);         }         );         et.triggers.Add(entry);         //         entry new EventTrigger.Entry();         entry.eventID EventTriggerType.Drag;//拖拽中         entry.callback.AddListener(delegate (BaseEventData arg)         {             PointerEventData ped (PointerEventData)arg;//将基础数据变成鼠标数据             Vector3 newPos;             RectTransformUtility.ScreenPointToWorldPointInRectangle(                 btn.GetComponentRectTransform(), Mouse.current.position.ReadValue(),//在摄像机视角下鼠标当前坐标转换过去                 ped.enterEventCamera, out newPos);             btn.transform.position newPos;         }         );         et.triggers.Add(entry);         /;         entry new EventTrigger.Entry();         entry.eventID EventTriggerType.EndDrag;//结束拖拽         entry.callback.AddListener(delegate (BaseEventData arg)         {             if (!EventSystem.current.IsPointerOverGameObject())             {                 btn.transform.parent btnParent;                 image.raycastTarget true;                 return;             }             PointerEventData ped (PointerEventData)arg;             Transform target ped.pointerEnter.transform;             if (target)             {                 if (target.tag obj.GetType().ToString())                 {                     obj.TakeOn();                     //交换装备                     ChangeGameObj(target.parent, btn);                     //刷新数值                     UpdatePlayerValue();                 }                 else if (target.name obj.GetType().ToString() || target.name obj.type)                 {                     //交换药品                     ChangeGameObj(target, btn);                 }                 else                 {                     obj.isTakeOn false;                     btn.transform.parent btnParent;                 }             }             image.raycastTarget true;         }         );         et.triggers.Add(entry);         /         entry new EventTrigger.Entry();         entry.eventID EventTriggerType.PointerClick;//拖拽中         entry.callback.AddListener(delegate (BaseEventData arg)         {             if (btn.tag ! ObjType.Drug.ToString())             {                 return;             }             //MainGame.player.UseDrugObj(btn.transform);         }         );         et.triggers.Add(entry);     }     //刷新玩家数据     public void UpdatePlayerValue()     {         textHp.text 生命: MainGame.player.Hp / MainGame.player.HpMax;         textMp.text 魔力: MainGame.player.Mp / MainGame.player.MpMax;         textAtt.text 攻击: MainGame.player.Att;         textDef.text 防御: MainGame.player.Def;         textMdf.text 魔抗: MainGame.player.Mdf;         textSpd.text 速度: MainGame.player.Spd;         textLv.text 等级: MainGame.player.lv;         textExp.text 经验: MainGame.player.Exp;     }     void ChangeGameObj(Transform target, GameObject btn)     {         GameObj temp new GameObj();         if (target.childCount 2)         {             temp GameManager.GetGameObj(target.GetChild(0).name);             SetBtnTakeOff(target.GetChild(0), temp);         }         btn.transform.parent target.transform;         btn.transform.SetAsFirstSibling();         btn.transform.localPosition Vector3.zero;         btn.GetComponentRectTransform().sizeDelta target.GetComponentRectTransform().sizeDelta;         temp GameManager.GetGameObj(btn.name);         if (temp ! null)         {             temp.isTakeOn true;         } }     void SetBtnTakeOff(Transform btn, GameObj obj)     {         if (obj ! null)         {             btn.parent btnParent;             obj.isTakeOn false;             btn.GetComponentImage().raycastTarget true;         }     } } 挂载脚本 将content拖拽 修改unity场景中TxtParent为TextParent 拖拽Text预制体 添加图片作为一件脱装备设置正常尺寸 修改Button名为BtnTakeOff 将UITween代码分别挂载在Bag和Equip上 拖拽背包面板BagPanel 添加标签 拖拽 增加两个页面的偏移值 接下来需要做下侧道具栏的层级显示
http://www.zqtcl.cn/news/670365/

相关文章:

  • 西安响应式网站网页设计的模板
  • 古装衣服店网站建设页面网站执行速度
  • 哪里的网站建设哈尔滨网络优化推广公司
  • 给网站做友情链接凡科网干嘛的
  • 网站经常出现502牧星网站建立
  • 个人网站建设的收获dw网站导航怎么做
  • 徐州网站设计快速排名网站
  • dede手机网站跳转口碑营销平台
  • 开一个素材设计网站怎么做的网页传奇手机版
  • 网站开发后端框架什么意思树莓派3 部署wordpress
  • 站长之家最新域名查询合肥网站建设5k5
  • h5做网站什么软件北京公司注销流程及费用
  • 淮北市相山区建设局网站合肥比较好的网站制作
  • 松岗营销型网站建设公司网站需要服务器吗
  • 图书馆网站信息化建设中国seo第一人
  • 域名网站负责人的责任一键制作单页网站
  • 南宁建设局网站建设有限公司
  • 湛江建设工程交易中心网站企业营销网站建设步骤
  • 网站所有者查询罗湖做网站的公司
  • 网站推广的目标是什么如何提高网站在百度的排名
  • 建设网站基础wordpress 网络图片
  • 深圳网站搜索优化工具义乌公司网站
  • 百度搜索网站带图片sem是什么品牌
  • 百度网盘app下载辽宁seo
  • 一般做网站用什么软件企业管理咨询服务机构
  • 达内培训网站开发金融公司网站 html
  • 珠海网站制作推荐微信营销和微博营销的区别
  • 电影网站如何做5网站建设公司
  • 河南网站优化公司哪家好南山网站设计线
  • 网站构建代码模板番禺网站建设