【UnityRPG游戏制作】Unity_RPG项目_PureMVC框架应用

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创
👨‍💻 收录于专栏:就业宝典

🅰️推荐专栏

⭐-软件设计师高频考点大全



文章目录

    • 前言
    • (==3==)PureMVC框架面板系统
        • **SetPanel**
        • **GamePanel**
        • statePanel
        • backPackPanel
        • RolePanel
        • SotrePanel
        • TipPanel
        • StartTipPanel
        • NPCTipPanel
        • GameOVerPanel
        • GamePassPanel(Clone)
    • 🅰️


前言

请添加图片描述



3PureMVC框架面板系统


在这里插入图片描述

SetPanel

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能:  设置面板视图
//-------创建者:         -------
//------------------------------public class SetView : BasePanel
{public Button stayBtu;     //继续游戏按钮public Slider soundSlider; //音量滑动条    }
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能: 设置面板视图中介
//-------创建者:         -------
//------------------------------public class SetViewMediator : Mediator
{//铭牌名public static string NAME = "SetViewMediator";/// <summary>/// 构造函数/// </summary>public SetViewMediator() : base(NAME){}/// <summary>/// 重写监听感兴趣的通知的方法/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public override string[] ListNotificationInterests(){return new string[] {};}/// <summary>/// 面板中组件设置(监听相关)/// </summary>/// <param name="stateView"></param>public void setView(SetView seteView){ViewComponent = seteView;seteView.stayBtu.onClick.AddListener(() =>{SendNotification(PureNotification.HIDE_PANEL, "SetPanel");});//音乐滑动条seteView.soundSlider.onValueChanged.AddListener((vlaue) => {PlayerContorller.GetInstance().audioClip.volume = vlaue;});}/// <summary>/// 玩家受伤逻辑/// </summary>public void Hurt(){}/// <summary>/// 重写处理通知的方法,处理通知,前提是完成通知的监听/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){}}
GamePanel

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能:  游戏面板视图
//-------创建者:         -------
//------------------------------public class GameView : BasePanel
{public Slider audioSliderVuale;  //音量滑动条public Button startBtu;    //开始按钮public Button tipBtu;      //游戏说明按钮}
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;//-------------------------------
//-------功能:  游戏面板视图中介
//-------创建者:         -------
//------------------------------public class GameViewMediator : Mediator
{//铭牌名public static string NAME = "GameViewMediator";/// <summary>/// 构造函数/// </summary>public GameViewMediator() : base(NAME){}/// <summary>/// 重写监听通知的方法,返回需要的监听(通知)/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public override string[] ListNotificationInterests(){return new string[] {//PureNotification.UPDATA_ROLE_INFO,//PureNotification.UPDATA_STATE_INFO};}/// <summary>/// 面板中组件设置(监听相关)/// </summary>/// <param name="gameView"></param>public void SetView(GameView   gameView){Debug.Log(gameView+"执行SetView");ViewComponent = gameView;//开始按钮逻辑监听gameView.startBtu.onClick.AddListener(()=>{Time.timeScale = 1;//取消游戏暂停SendNotification(PureNotification.HIDE_PANEL, "GamePanel");SendNotification(PureNotification.SHOW_PANEL, "StatePanel");});gameView.tipBtu .onClick.AddListener(() =>{SendNotification(PureNotification.SHOW_PANEL , "StartTipPanel");});//音乐滑动条gameView.audioSliderVuale .onValueChanged.AddListener((vlaue) =>{PlayerContorller.GetInstance().audioClip.volume = vlaue;});}/// <summary>/// 重写处理通知的方法,处理通知/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){//case PureNotification.UPDATA_STATE_INFO://    (ViewComponent as StateView).UpdateView(notification.Body as PlayerDataObj);//    break;}}
}
statePanel

在这里插入图片描述

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能:  状态面板视图
//-------创建者:         -------
//------------------------------public class StateView : BasePanel 
{//1.找控件public TextMeshProUGUI levelText;     //等级    public TextMeshProUGUI bloodValue;    //当前血量   public TextMeshProUGUI attackVaule;   //攻击力值   public float  blood ,maxBlood, attack;    public Slider hpSlider;    //玩家血条   public Slider expSlider;   //经验血条   public Slider bossSlider;  //Boss血条   public Button roleBtu;     //角色按钮   public Button backpackBtu; //背包按钮  public Image  weaponSprite;//当前武器  public Text damon;     //当前钻石的数量/// <summary>/// 2.更新面板视图View的显示数据/// </summary>public void UpdateView(PlayerDataObj data)   //此处选择的是MVC的思想,在这里些许有些耦合{Debug.Log("来更新了");if(data != null){blood = data.blood;attack = data.attack;maxBlood = data.maxBlood;   levelText.text = Convert.ToString(data.level);bloodValue.text = Convert.ToString(data.blood); attackVaule.text = Convert.ToString(data.attack); bossSlider.value = data.blood / data.maxBlood;weaponSprite.sprite = data.nowItem ;damon.text = Convert.ToString(PlayerContorller.GetInstance().damonNum ); }else{Debug.Log("date为空");}}/// <summary>/// 增加钻石/// </summary>public void UpdateDamon(){damon.text = PlayerContorller .GetInstance().damonNum .ToString ();}}
using PureMVC.Core;
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能:  状态面板视图中介
//-------创建者:         
//------------------------------/// <summary>
/// 状态面板视图中介
/// 固定:
/// 1.继承PureMVC的Mediator脚本
/// 2.写构造函数
/// 3.重写监听通知的方法
/// 4.重写处理通知的方法
/// 5.可选:重写注册时的方法
/// </summary>
public class StateViewMediator : Mediator
{   //铭牌名public static string NAME = "StateViewMediator";/// <summary>/// 构造函数/// </summary>public StateViewMediator() : base(NAME){}/// <summary>/// 重写监听感兴趣的通知的方法/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public override string[] ListNotificationInterests(){return new string[] {PureNotification.UPDATA_STATE_INFO,PureNotification.PLAYER_INJURY ,PureNotification.LEVEL_UP ,PureNotification.UPDATA_WEAPON_INFO2,PureNotification .UPDATA_EXP,PureNotification.UPDATA_DAMON};}/// <summary>/// 面板中组件设置(监听相关)/// </summary>/// <param name="stateView"></param>public void setView(StateView stateView){ViewComponent = stateView;stateView.roleBtu.onClick.AddListener(()=>{//SendNotification(PureNotification.HIDE_PANEL, "StatePanel");SendNotification(PureNotification.SHOW_PANEL, "RolePanel");});stateView.backpackBtu.onClick.AddListener(() =>{//SendNotification(PureNotification.HIDE_PANEL, "StatePanel");SendNotification(PureNotification.SHOW_PANEL, "BackpackPanel");});   }/// <summary>/// 玩家受伤逻辑/// </summary>public void Hurt(){}/// <summary>/// 重写处理通知的方法,处理通知,前提是完成通知的监听/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){case PureNotification.UPDATA_STATE_INFO: //状态更新的处理逻辑(ViewComponent as StateView).UpdateView(notification.Body as PlayerDataObj);break;case PureNotification.PLAYER_INJURY : //玩家受伤命令的处理逻辑if (ViewComponent != null){StateView stateView = ViewComponent as StateView;int blood = Convert.ToInt32(notification.Body);stateView.blood -= blood ;stateView.blood = stateView.blood > stateView.maxBlood ? stateView.maxBlood : stateView.blood; //防止血条溢出float off = stateView.blood / stateView.maxBlood;stateView.hpSlider.value = off; //改变血条if(off <= 0)//如果血条变成0或者小于0,则玩家死亡{PlayerContorller.GetInstance().isDied = true;PlayerContorller.GetInstance().DiedEvent();//开启死亡}}break;    case PureNotification.UPDATA_WEAPON_INFO2 :  //玩家武器信息更新的处理逻辑if (ViewComponent != null){StateView stateView = ViewComponent as StateView;stateView.weaponSprite.sprite   = notification .Body as Sprite  ;stateView.weaponSprite.enabled = true;}break;case PureNotification.UPDATA_EXP ://玩家经验信息更新的处理逻辑if (ViewComponent != null){StateView stateView = ViewComponent as StateView;int exp = Convert.ToInt32(notification.Body);float off = exp / 100f;Debug.Log("来了"+off);stateView.expSlider .value = off; //改变经验条if(off >= 1 )  //经验条满{stateView.blood = stateView.maxBlood;if (!Facade.HasProxy (PlayerProxy.NAME))  //首先判断是否有该中介,没有就new一个{Facade.RegisterProxy(new PlayerProxy()); //注册该视图中介}//获取视图对应的代理PlayerProxy bm = Facade.RetrieveProxy(PlayerProxy.NAME) as PlayerProxy;bm.LevUp();  //数据升级的方法stateView.UpdateView(bm.Data as PlayerDataObj); //升级数据stateView.expSlider.value = 0;PlayerContorller.GetInstance().exp = 0; //经验条归位}}break;case PureNotification.UPDATA_DAMON:{if (ViewComponent != null){StateView stateView = ViewComponent as StateView;stateView.UpdateDamon(); //执行增加钻石的方法}break;}}}}
backPackPanel

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能: 背包系统视图
//-------创建者:         
//------------------------------public class BackpackView : BasePanel
{public Button back; //退出按钮public GridLayoutGroup grid; /// <summary>/// 更新背包中的内容/// </summary>/// <param name="itemBtu"></param>public void AddItem(Button itemBtu){try{Destroy(itemBtu.transform.GetComponent<ShopItem>());   //移除该商品的脚本itemBtu.transform.AddComponent<PropItem>(); //重新添加脚本}catch { }//将传入的按钮设置为布局下面的子物体itemBtu.transform.SetParent (grid.gameObject.transform );itemBtu.transform.localScale = Vector3.one ;//初始化商品道具大小}}
RolePanel

在这里插入图片描述

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能:  角色面板视图
//-------创建者:         -------
//------------------------------public class RoleView : BasePanel
{//1.找控件public Button back;        //退出public Text levelText;     //等级public Text maxBlood;      //最大血量public Text attackVaule;   //攻击力值public Text defenceVaule;  //防御力值public Text CriticalVaule; //暴击率public Image[] item; //武器栏图public GameObject[] role;  //显示角色选择/// <summary>/// 2.更新面板视图View的显示数据/// </summary>public void UpdateView(PlayerDataObj data)   //此处选择的是MVC的思想,在这里些许有些耦合{if (data != null){levelText.text = data.level.ToString();maxBlood.text  = data.maxBlood.ToString();attackVaule.text   = data.attack.ToString();defenceVaule.text  = data.denfence.ToString();CriticalVaule.text = data.strike.ToString();}else{Debug.Log("角色面板无法更新");}}/// <summary>/// 更新武器栏中的图片/// </summary>/// <param name="item"></param>public void UpdateWeaponItem(PlayerDataObj data){Debug.Log("更新武器");if (data.index < 3 && PlayerContorller.GetInstance().curWeaponNum >0){this.item[data.index].enabled = true;this.item[data.index++].sprite = data.nowItem;}      }
}
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能:  角色面板视图中介
//-------创建者:         -------
//------------------------------/// <summary>
/// 角色面板视图中介
/// 固定:
/// 1.继承PureMVC的Mediator脚本
/// 2.写构造函数
/// 3.重写监听通知的方法
/// 4.重写处理通知的方法
/// 5.可选:重写注册时的方法
/// </summary>
public class RoleViewMediator : Mediator
{//铭牌名public static string NAME = "RoleViewMediator";/// <summary>/// 构造函数/// </summary>public RoleViewMediator( ) : base(NAME){//可以去写创捷面板预设体的逻辑等}/// <summary>/// 重写监听通知的方法,返回需要的监听(通知)/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public  override string[] ListNotificationInterests(){return new string[] { PureNotification.UPDATA_ROLE_INFO,PureNotification.UPDATA_WEAPON_INFO1};}public void SetView(RoleView roleView){Debug.Log(roleView + "执行SetView");ViewComponent = roleView;//开始按钮逻辑监听roleView.back.onClick.AddListener(() =>{SendNotification(PureNotification.HIDE_PANEL, "RolePanel");});}/// <summary>/// 重写处理通知的方法,处理通知/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){case  PureNotification.UPDATA_ROLE_INFO:if (ViewComponent != null){(ViewComponent as RoleView).UpdateView(notification.Body as PlayerDataObj);(ViewComponent as RoleView).UpdateWeaponItem(notification.Body as PlayerDataObj);}else { Debug.Log("为空"); }break;}}/// <summary>/// 可选:重写注册方法(他们需要到Facde中注册)/// </summary>public override void OnRegister(){base.OnRegister();}}
SotrePanel

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能: 商城系统
//-------创建者:         -------
//------------------------------public class StoreView : BasePanel
{public GridLayoutGroup StoreGrid;public GridLayoutGroup BackGrid;public Button backBtu;public Button bugPack;//放入背包}
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能:          -------
//-------创建者:         -------
//------------------------------public class StoreViewMediator : Mediator
{//铭牌名public static string NAME = "StoreViewMediator";/// <summary>/// 构造函数/// </summary>public StoreViewMediator() : base(NAME){}/// <summary>/// 重写监听感兴趣的通知的方法/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public override string[] ListNotificationInterests(){return new string[] {};}/// <summary>/// 面板中组件设置(监听相关)/// </summary>/// <param name="stateView"></param>public void setView(StoreView storeView){ViewComponent = storeView;if(ViewComponent == null) { Debug.Log("面板是空的"); }storeView.backBtu.onClick.AddListener(()=>{SendNotification(PureNotification.HIDE_PANEL, "StorePanel");});storeView.bugPack.onClick.AddListener(() =>{SendNotification(PureNotification.HIDE_PANEL, "StorePanel");});}/// <summary>/// 玩家受伤逻辑/// </summary>public void Hurt(){}/// <summary>/// 重写处理通知的方法,处理通知,前提是完成通知的监听/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){}}
}
TipPanel

在这里插入图片描述
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能:  余额不足提示面板视图
//-------创建者:         -------
//------------------------------public class TipView : BasePanel
{public Button ok;
}
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能: 余额不足提示面板中介
//-------创建者:         -------
//------------------------------public class TipViewMediator : Mediator
{//铭牌名public static string NAME = "TipViewMediator";/// <summary>/// 构造函数/// </summary>public TipViewMediator() : base(NAME){}/// <summary>/// 重写监听感兴趣的通知的方法/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public override string[] ListNotificationInterests(){return new string[] {};}/// <summary>/// 面板中组件设置(监听相关)/// </summary>/// <param name="stateView"></param>public void setView(TipView tipView){ViewComponent = tipView;if (ViewComponent == null) { Debug.Log("面板是空的"); }tipView.ok.onClick.AddListener(() =>{SendNotification(PureNotification.HIDE_PANEL, "TipPanel");});}/// <summary>/// 玩家受伤逻辑/// </summary>public void Hurt(){}/// <summary>/// 重写处理通知的方法,处理通知,前提是完成通知的监听/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){}}
}
StartTipPanel

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能:  开始说明面板视图
//-------创建者:         -------
//------------------------------public class StartTipView : BasePanel
{public Button startBtu; }
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能:   开始说明面板视图中介
//-------创建者:         -------
//------------------------------public class StartTipViewMediator : Mediator
{//铭牌名public static string NAME = "StartTipViewMediator";/// <summary>/// 构造函数/// </summary>public StartTipViewMediator() : base(NAME){}/// <summary>/// 重写监听通知的方法,返回需要的监听(通知)/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public override string[] ListNotificationInterests(){return new string[] {//PureNotification.UPDATA_ROLE_INFO,//PureNotification.UPDATA_STATE_INFO};}public void SetView(StartTipView startTipView){Debug.Log(startTipView + "执行SetView");ViewComponent = startTipView;//按钮逻辑监听startTipView.startBtu.onClick.AddListener(() =>{SendNotification(PureNotification.HIDE_PANEL, "GamePanel");SendNotification(PureNotification.HIDE_PANEL, "startTipPanel");SendNotification(PureNotification.SHOW_PANEL, "StatePanel");});}/// <summary>/// 重写处理通知的方法,处理通知/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){//case PureNotification.UPDATA_STATE_INFO://    (ViewComponent as StateView).UpdateView(notification.Body as PlayerDataObj);//    break;}}
}
NPCTipPanel

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能: NPC交互面板视图
//-------创建者:         -------
//------------------------------public class NPCTipView : BasePanel
{public Button backBtu;
}
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能: NPC交互面板视图中介
//-------创建者:         -------
//------------------------------/// <summary>
/// 状态面板视图中介
/// 固定:
/// 1.继承PureMVC的Mediator脚本
/// 2.写构造函数
/// 3.重写监听通知的方法
/// 4.重写处理通知的方法
/// 5.可选:重写注册时的方法
/// </summary>
public class NPCTipViewMediator : Mediator
{//铭牌名public static string NAME = "NPCTipViewMediator";/// <summary>/// 构造函数/// </summary>public NPCTipViewMediator() : base(NAME){}/// <summary>/// 面板中组件设置(监听相关)/// </summary>public void SetView(NPCTipView npcTipView){Debug.Log(npcTipView + "执行SetView");ViewComponent = npcTipView;//出击按钮逻辑监听npcTipView.backBtu.onClick.AddListener(() =>{SendNotification(PureNotification.HIDE_PANEL, "NPCTipPanel");          });}/// <summary>/// 重写监听通知的方法,返回需要的监听(通知)/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public override string[] ListNotificationInterests(){return new string[] {//PureNotification.UPDATA_ROLE_INFO,//PureNotification.UPDATA_STATE_INFO};}/// <summary>/// 重写处理通知的方法,处理通知/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){//case PureNotification.UPDATA_STATE_INFO://    (ViewComponent as StateView).UpdateView(notification.Body as PlayerDataObj);//    break;}}
}
GameOVerPanel

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能: 失败面板视图
//-------创建者:         -------
//------------------------------public class DefeatView : BasePanel
{public Button restartBtu; //重新开始按钮public Button endBtu;     //结束按钮
}
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;//-------------------------------
//-------功能:  失败面板视图中介
//-------创建者:         -------
//------------------------------/// <summary>
/// 状态面板视图中介
/// 固定:
/// 1.继承PureMVC的Mediator脚本
/// 2.写构造函数
/// 3.重写监听通知的方法
/// 4.重写处理通知的方法
/// 5.可选:重写注册时的方法
/// </summary>
public class DefeatViewMediator : Mediator
{//铭牌名public static string NAME = "DefeatViewMediator";/// <summary>/// 构造函数/// </summary>public DefeatViewMediator() : base(NAME){}/// <summary>/// 重写监听通知的方法,返回需要的监听(通知)/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public override string[] ListNotificationInterests(){return new string[] {//PureNotification.UPDATA_ROLE_INFO,//PureNotification.UPDATA_STATE_INFO};}public void SetView(DefeatView defeatView){ViewComponent = defeatView;defeatView.restartBtu.onClick.AddListener(()=>{SendNotification(PureNotification.HIDE_PANEL ,"DefeatPanel");SceneManager.LoadScene(2);});defeatView.endBtu .onClick.AddListener(() => {SendNotification(PureNotification.HIDE_PANEL, "DefeatPanel");SceneManager.LoadScene(2);});}/// <summary>/// 重写处理通知的方法,处理通知/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){//case PureNotification.UPDATA_STATE_INFO://    (ViewComponent as StateView).UpdateView(notification.Body as PlayerDataObj);//    break;}}
}
GamePassPanel(Clone)

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//-------------------------------
//-------功能: 通过游戏面板视图
//-------创建者:         -------
//------------------------------public class GamePassView : BasePanel
{public Button okenter;
}
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;//-------------------------------
//-------功能:    通过游戏面板视图中介
//-------创建者:         -------
//------------------------------public class GamePassViewMediator : Mediator
{//铭牌名public static string NAME = "GamePassViewMediator";/// <summary>/// 构造函数/// </summary>public GamePassViewMediator() : base(NAME){}/// <summary>/// 重写监听感兴趣的通知的方法/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public override string[] ListNotificationInterests(){return new string[] {};}/// <summary>/// 面板中组件设置(监听相关)/// </summary>/// <param name="stateView"></param>public void setView(GamePassView tipView2){ViewComponent = tipView2;if (ViewComponent == null) { Debug.Log("面板是空的"); }tipView2.okenter .onClick.AddListener(() =>{SendNotification(PureNotification.HIDE_PANEL, "GamePassPanel");SceneManager.LoadScene(2);});}/// <summary>/// 玩家受伤逻辑/// </summary>public void Hurt(){}/// <summary>/// 重写处理通知的方法,处理通知,前提是完成通知的监听/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){}}
}

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/10928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue-watch监听器

监听器 watch侦听器&#xff08;监视器&#xff09;简单写法完整写法 watch侦听器&#xff08;监视器&#xff09; 作用&#xff1a;监视数据变化&#xff0c;执行一些业务逻辑或异步操作 语法&#xff1a; watch同样声明在跟data同级的配置项中简单写法&#xff1a; 简单类型…

C++ 中的 lambda 表达式

1.概念 lambda表达式实际上是一个匿名类的成员函数&#xff0c;该类由编译器为lambda创建&#xff0c;该函数被隐式地定义为内联。因此&#xff0c;调用lambda表达式相当于直接调用匿名类的operator()函数&#xff0c;这个函数可以被编译器内联优化&#xff08;建议&#xff0…

地图涟漪效果

参考API echarts图表集 useEcharts.js import { onBeforeUnmount, onDeactivated } from "vue"; // import * as echarts from "echarts";/*** description 使用 Echarts (只是为了添加图表响应式)* param {Element} myChart Echarts实例 (必传)* param …

AcWing-168生日蛋糕-搜索/剪枝

题目 思路 表面积和体积公式&#xff1a;以下分析参考自&#xff1a;AcWing 168. 生日蛋糕【图解推导】 - AcWing&#xff1b;AcWing 168. 关于四个剪枝的最清楚解释和再次优化 - AcWing 代码 #include<iostream> #include<cmath> using namespace std;const in…

【爬虫基础1.1课】——requests模块上

目录索引 requests模块的作用&#xff1a;实例引入&#xff1a; 特殊情况&#xff1a;锦囊1&#xff1a;锦囊2: 这一个栏目&#xff0c;我会给出我从零开始学习爬虫的全过程。感兴趣的小伙伴可以关注一波&#xff0c;用于复习和新学都是不错的选择。 那么废话不多说&#xff0c…

C语言学习(九)多文件编程 存储类型 结构体

目录 一、多文件编程&#xff08;一&#xff09;不写头文件的方方式进行多文件编程 &#xff08;二&#xff09;通过头文件方式进行多文件编程&#xff08;1&#xff09;方法&#xff08;2&#xff09;头文件守卫 &#xff08;三&#xff09; 使用多文件编程实现 - * / 功能 二…

HC-06 蓝牙串口从机 AT 命令详解

HC-06 蓝牙串口从机 AT 命令详解 要使用 AT 命令&#xff0c;首先要知道 HC-06 的波特率&#xff0c;然后要进入 AT 命令模式。 使用串口一定要知道三要素&#xff0c;一是波特率&#xff0c;二是串口号&#xff0c;三是数据格式, HC-06只支持一种数据格式: 数据位8 位&#…

HTTP 连接详解

概述 世界上几乎所有的 HTTP 通信都是由 TCP/IP 承载的&#xff0c;客户端可以打开一条TCP/IP连接&#xff0c;连接到任何地方的服务器。一旦连接建立&#xff0c;客户端和服务器之间交换的报文就永远不会丢失、受损或失序 TCP&#xff08;Transmission Control Protocol&…

97. 交错字符串-----回溯、动态规划

题目链接 97. 交错字符串 - 力扣&#xff08;LeetCode&#xff09; 解答 递归回溯 题目所述为两个字符串交替组成第三个字符串&#xff0c;之前好像做过相似的题目&#xff0c;直接联想到可以考虑使用递归回溯的做法&#xff0c;让字符串s1和字符串s2分别作为起始字符串&…

Mybatis-Plus大批量插入数据到MySQL

MyBatis-Plus的saveBatch方法 GetMapping("/save1") public void save1() {// 数据准备List<MallOrder> orderList getMallOrderList();// mybatis-pluslong start System.currentTimeMillis();mallOrderService.saveBatch(orderList);System.out.println(&…

计算机服务器中了360后缀勒索病毒怎么解密,360后缀勒索病毒恢复

计算机网络技术的不断发展与应用&#xff0c;为企业的生产运营提供了极大便利&#xff0c;大大提高了企业的办公效率&#xff0c;为企业的生产运营注入了新的动力&#xff0c;但网络是一把双刃剑&#xff0c;在为企业提供便利的同时&#xff0c;也为企业的数据安全带来严重威胁…

google test 使用指南

目录 测试项目 calculator.h calculator.cpp test01.cpp 创建新项目 选择Google Test 选择要测试的项目 pch.cpp 加入依赖 设为启动项目 ​编辑 运行 ​编辑 关键点 测试项目 calculator.h #ifndef __CALCULATOR_H__ #define __CALCULATOR_H__#include <i…

Linux操作系统中管理磁盘的另外一种操作方式。即LVM——逻辑卷管理操作

在Linux操作系统中管理磁盘的一种方法名称——LVM&#xff0c;这种管理磁盘的优势。 1.使用LVM去管理磁盘可以在不影响原来数据的前提下去扩容磁盘空间或者是缩减磁盘空间。 在LVM中除了上层逻辑券可以扩容&#xff0c;下层的券组也可以扩容。 2.使用LVM管理的磁盘支持快照功…

MySQL中的子查询

子查询,在一个查询语句中又出现了查询语句 子查询可以出现在from和where后面 from 表子查询(结果一般为多行多列)把查询结果继续当一张表对待 where 标量子查询(结果集只有一行一列)查询身高最高的学生,查询到一个最高身高 列子查询(结果集只有一行多列) 对上表进行如下操作 …

韩顺平0基础学Java——第10天

p202-233 类与对象&#xff08;第七章&#xff09; 成员方法 person类中的speak方法&#xff1a; 1.public表示方法是公开的 2.void表示方法没有返回值 3.speak&#xff08;&#xff09;中&#xff0c;speak表示方法名&#xff0c;括号是形参列表。 4.大括号为方法体&am…

WPF之多种视图切换

1&#xff0c;View切换&#xff0c;效果呈现 视图1 视图2 视图3 2&#xff0c;在Xaml中添加Listview控件&#xff0c;Combobox控件。 <Grid ><Grid.RowDefinitions><RowDefinition Height"143*"/><RowDefinition Height"30"/>&l…

Leetcode经典题目之用队列实现栈

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 目录 1、题目展示2、题目分析3、完整代码演示4、结语 1、题目展示 前面我们了解过如何实现队列…

第五百回 Get路由管理

文章目录 1. 概念介绍2. 使用方法2.1 普通路由2.2 命名路由 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get显示Dialog"相关的内容&#xff0c;本章回中将介绍使用get进行路由管理.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

掌握MySQL常用的命令

前言 MySQL是一个流行的开源关系型数据库管理系统&#xff0c;广泛应用于各种应用场景。熟练掌握MySQL的常用命令&#xff0c;对于数据库管理员和开发人员来说至关重要。本文将介绍MySQL数据库的一些基础术语、SQL语言分类&#xff0c;以及DDL、DML、DQL和DCL等操作&#xff0…

C++类与对象的一些练习

1.设计一个名为Rectangle的矩形类&#xff0c;其属性为矩形的长和宽&#xff0c;能计算和输出矩形的周长和面积。 class Rectangle { public:Rectangle(int c0,int k0):m_c(c),m_k(k){}int length()//周长{return 2 * (m_c m_k);}int area()//面积{return m_c * m_k;} privat…