当前位置: 首页 > 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.pierceye.com/news/670365/

相关文章:

  • 西安公司网站设计费用免费外国网站浏览器
  • 如何加快网站打开速度浦东新区建设机械网站
  • 求网站制作焦作网站建设的公司
  • 用python做网站不常见久久建筑网外墙岩棉保温板施工工艺
  • 做刷票的网站广告牌的样式大全
  • 手机登录网站怎么建设网站风格和功能设计方案
  • 网站报价天津网站在哪里建设
  • 湖北专业网站建设维修电话福清网站商城建设
  • 网站建设模块怎么使用线上注册公司流程和费用
  • 营销型网站设计内容wordpress加速优化插件
  • 设计坞网站官方下载4399网页游戏入口
  • 太原百度网站建设如何联系网站管理员
  • 海东高端网站建设公司视频网站 费用
  • 可以帮别人备案网站吗手机建网站公司
  • 四川建设厅网上查询网站信用网站系统建设方案
  • 克隆网站后台做系统用哪个网站好
  • html5 手机网站页面实例wordpress 路由404
  • 百度地图嵌入公司网站wordpress如何去掉分类里面的大字
  • 山东住房与城乡建设网站够完美网站建设
  • 班级网站建设首页报告如何查询一个网站是否备案
  • 艺术设计类网站石家庄公司的网站设计
  • 舞钢网站建设企业做网站需要什么软件
  • 网站开发上市公司专业的网站建设价格低
  • 备案网站有哪些资料公司名字大全四个字
  • 网站推广预期达到的目标建湖人才网手机版
  • 营销网站设计公司排名wordpress图片缓冲
  • 山西建设官方网站第三方网站流量统计
  • 企业网站用wordpress龙岗网站建设网站排名优化
  • 成都建设网站哪家好事件营销的特点
  • 如何利用模板做网站视频wordpress手机版边侧导航