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

一级a做爰片免费观看 安全网站基层建设论文查询官方网站

一级a做爰片免费观看 安全网站,基层建设论文查询官方网站,校园服装网站建设预算,给军方做网站套模板行不行观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者&#…

观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。

一、事件中心管理类

继承了一个单例模式基类,节省代码

public class EventCenter : BaseManager<EventCenter>
{//key —— 事件的名字(比如:怪物死亡,玩家死亡,通关 等等)//value —— 对应的是 监听这个事件 对应的委托函数们private Dictionary<string, UnityAction<object>> eventDic = new Dictionary<string, UnityAction<object>>();/// <summary>/// 添加事件监听/// </summary>/// <param name="name">事件的名字</param>/// <param name="action">准备用来处理事件 的委托函数</param>public void AddEventListener(string name, UnityAction<object> action){//有没有对应的事件监听//有的情况if( eventDic.ContainsKey(name) ){eventDic[name]+= action;}//没有的情况else{eventDic.Add(name, action);}}/// <summary>/// 过场景,移除对应的事件监听/// </summary>/// <param name="name">事件的名字</param>/// <param name="action">对应之前添加的委托函数</param>public void RemoveEventListener(string name, UnityAction<object> action){if (eventDic.ContainsKey(name))eventDic[name]-= action;}/// <summary>/// 事件触发/// </summary>/// <param name="name"></param>public void EventTrigger(string name,object info){//有没有对应的事件监听//有的情况if (eventDic.ContainsKey(name)){if (eventDic[name]!= null)eventDic[name].Invoke(info);}}/// <summary>/// 清空事件中心/// 主要用在 场景切换时/// </summary>public void Clear(){eventDic.Clear();}
}

二、模拟一个功能

玩家要完成一个任务“杀死三只哥布林”,玩家点击鼠标左键杀死一只怪物,如果这个怪物是哥布林,那么任务计数加1,达到3后提示任务完成。

其中还会显示玩家击杀了什么怪物,击杀后获得多少金钱

玩家类

public class Player : MonoBehaviour
{public string name = "Holens";// Start is called before the first frame updatevoid Start(){EventCenter.GetInstance().AddEventListener("MonsterDead", GetMoney);}// Update is called once per framevoid Update(){//按下左键杀死哥布林if (Input.GetMouseButtonDown(0)){KillMonster();}}public void KillMonster(){//杀死哥布林//向事件中心发送请求 执行杀死哥布林逻辑EventCenter.GetInstance().EventTrigger("KillMonster", this);}public void GetMoney(object info){print(this.name+"杀死了" + (info as Monster).name + "获得"+ (info as Monster).money+"金钱");}
}

怪物类

public class Monster : MonoBehaviour
{public string name;public int money = 100;// Start is called before the first frame updatevoid Start(){//向 击杀哥布林 委托添加死亡函数EventCenter.GetInstance().AddEventListener("KillMonster", Dead);}public void Dead(object info){print((info as Player).name+"杀死了"+this.name);//死亡时向事件中心发送请求 执行怪物死亡逻辑EventCenter.GetInstance().EventTrigger("MonsterDead", this);}
}

任务类

public class Task : MonoBehaviour
{public int nowNum;public int maxNum = 3;public string messionInfo = "杀死三只哥布林";public bool isFinish = false;// Start is called before the first frame updatevoid Start(){print("任务目标是" + messionInfo);//怪物死亡//向 怪物死亡 委托添加函数(当怪物死亡时任务计数加1)EventCenter.GetInstance().AddEventListener("MonsterDead", UpdateNum);}// Update is called once per framevoid Update(){if (nowNum == maxNum&&!isFinish){//计数达到目标,任务完成FinishMession();isFinish = true;}}public void UpdateNum(object info){//如果杀死的目标是哥布林,则计数增加if ((info as Monster).name=="哥布林"){nowNum++;}}public void FinishMession(){print("任务完成");}
}

三、运行过程及结果

创建三个物体并挂载相应代码

怪物名字设置成1

此时按下鼠标左键五次,可以看到触发了提示但是因为杀的不是哥布林,所以任务没有完成

 将名字改为哥布林,点击三次后提示完成任务

http://www.yayakq.cn/news/912521/

相关文章:

  • 开做网站的公司 条件河南省工程项目信息公示栏
  • 网站建设邀请函重庆网站优化公司
  • 做一样的模板网站会被告侵权吗西安黄页网
  • 网站 刷流量 SEO建设项目竣工验收公告网站
  • 网络营销的效果表现在哪几个方面网站百度排名优化
  • 网站建设流程策划静态网页软件
  • 合肥建设官方网站网站兼容设置
  • 做网站怎么接私活做跨境电商有没推荐的网站
  • 公司商城网站开发费做什么科目做相册哪个网站好用
  • 专做运动品牌的网站flash网页制作实例
  • 手机网站什么技术开发wordpress未找到页面
  • 信用网站建设工作简报自己做网站步骤
  • 1688会提供网站建设怎么添加网站权重
  • 额敏网站建设深圳建设注册中心网站
  • 网站内容有哪些建设集团企业网站
  • 手工艺品网站建设目的一级a做爰片手机电影网站
  • 增加收录网站网站实名认证必须做么
  • 龙岗建网站建设银行网站信息补充
  • 东莞飞天网站设计公司wordpress文章发布软件
  • 网站备案需要建设好网站吗网站页面架构怎么写
  • 宣讲家网站做四讲四有模范企业网站推广阶段
  • 建设网站的风险包装设计网站是什么样子的
  • 河北网站seo地址广州网页设计制作
  • 建设网站需要考虑什么徐州城乡建设局安监处网站
  • 建网站需要哪些技术哪家做网站的好
  • 网站在线制作系统wordpress后台打开超慢
  • 校园网站建设与管理钓鱼网站在线制作
  • 电商网站开发缓存wordpress多形式
  • 系部网站建设中期检查表怎么自己做公司网站
  • 河北农业建设信息网站用wordpress建站学什么