24.PureMVC框架-角色面板View界面层和Mediator中介者模式
24.1 知识点
创建NewRoleView脚本代表角色面板界面层。定义控件变量并按照MVC的思想提供更新方法。如果是用MVP的思想就在不耦合数据对象就行。
public class NewRoleView : MonoBehaviour
{
// 找控件
public Button btnClose;
public Button btnLevUp;
public Text txtLev;
public Text txtHp;
public Text txtAtk;
public Text txtDef;
public Text txtCrit;
public Text txtMiss;
public Text txtLuck;
// 提供面板更新的相关方法给外部
public void UpdateInfo(PlayerDataObj data)
{
txtLev.text = "LV." + data.lev;
txtHp.text = data.hp.ToString();
txtAtk.text = data.atk.ToString();
txtDef.text = data.def.ToString();
txtCrit.text = data.crit.ToString();
txtMiss.text = data.miss.ToString();
txtLuck.text = data.luck.ToString();
}
}
创建角色面板中介者脚本继承Mediator,定义名字并重写构造函数
// 套路写法
// 继承PureMVC中的Mediator脚本
public class NewRoleViewMediator : Mediator
{
public static new string NAME = "NewRoleViewMediator";
// 写构造函数
public NewRoleViewMediator() : base(NAME)
{
}
}
重写监听通知方法,返回更新事件字符串数组
// 重写监听通知的方法
public override string[] ListNotificationInterests()
{
return new string[] {
PureNotification.UPDATE_PLAYER_INFO,
// 以后你还关心别的通知 就在这后面通过逗号连接 加起来就行了
};
}
重写处理通知的方法。判断什么事件处理什么回调
// 重写处理通知的方法
public override void HandleNotification(INotification notification)
{
// INotification 对象 里面包含两个我们来说重要的参数
// 1. 通知名 我们根据这个名字来做对应的处理
// 2. 通知包含的信息
switch (notification.Name)
{
case PureNotification.UPDATE_PLAYER_INFO:
// 玩家数据更新逻辑处理
if (ViewComponent != null)
{
(ViewComponent as NewRoleView).UpdateInfo(notification.Body as PlayerDataObj);
}
break;
}
}
24.2 知识点代码
NewRoleView
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NewRoleView : MonoBehaviour
{
//1.找控件
public Button btnClose;
public Button btnLevUp;
public Text txtLev;
public Text txtHp;
public Text txtAtk;
public Text txtDef;
public Text txtCrit;
public Text txtMiss;
public Text txtLuck;
//2.提供面板更新的相关方法给外部
public void UpdateInfo(PlayerDataObj data)
{
txtLev.text = "LV." + data.lev;
txtHp.text = data.hp.ToString();
txtAtk.text = data.atk.ToString();
txtDef.text = data.def.ToString();
txtCrit.text = data.crit.ToString();
txtMiss.text = data.miss.ToString();
txtLuck.text = data.luck.ToString();
}
}
NewRoleViewMediator
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//套路写法
//1.继承PureMVC中的Mediator脚本
public class NewRoleViewMediator : Mediator
{
public static new string NAME = "NewRoleViewMediator";
//2.写构造函数
public NewRoleViewMediator():base(NAME)
{
}
//3.重写监听通知的方法
public override string[] ListNotificationInterests()
{
return new string[] {
PureNotification.UPDATE_PLAYER_INFO,
//以后你还关心别的通知 就在这后面通过逗号连接 加起来就行了
};
}
//4.重写处理通知的方法
public override void HandleNotification(INotification notification)
{
//INotification 对象 里面包含两个队我们来说 重要的参数
//1.通知名 我们根据这个名字 来做对应的处理
//2.通知包含的信息
switch (notification.Name)
{
case PureNotification.UPDATE_PLAYER_INFO:
//玩家数据更新 逻辑处理
if(ViewComponent != null)
{
(ViewComponent as NewRoleView).UpdateInfo(notification.Body as PlayerDataObj);
}
break;
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com