当前位置: 移动技术网 > IT编程>开发语言>.net > GameFreamWork框架----事件系统的应用

GameFreamWork框架----事件系统的应用

2018年12月18日  | 移动技术网IT编程  | 我要评论

人鱼小姐同人大神日记,ackisrecipelist,散粉和蜜粉的区别

事件系统用途广泛,对处理玩家数据有很大帮助(玩家金币,经验,等级),让数据多次调用,降低耦合

在unity中应用(以玩家金币发生变化来演示);

1).注册监听

2).移出监听

3).金币发生变化的时候,通知每个界面

操作:

1.将event三个脚本导入工程中;

2.写一个脚本,playerinformanagertest,脚本主要作用是存储用户数据,其他脚本需要数据时就在这个脚本中调用,利用事件系统

 1 using system.collections;
 2 using system.collections.generic;
 3 using unityengine;
 4 
 5 public class playerinfomanagertest {
 6 
 7     #region 单例模式
 8     private static playerinfomanagertest instance;
 9 
10     public static playerinfomanagertest instance
11     {
12         get
13         {
14             if (instance == null)
15             {
16                 instance = new playerinfomanagertest();
17             }
18             return instance;
19         }
20     }
21 
22     private playerinfomanagertest() { }
23     #endregion
24 
25 
26     private int playergold;
27 
28     public int playergold {
29 
30         get { return playergold; }
31 
32         set {
33             //之前玩家金币数值  !=  设置过来的数值
34             if (playergold != value)
35             {
36                 playergold = value;
37                 //数值发生变化  通知注册当前 金币发生变化的 界面
38                 eventdispatcher.triggerevent<int>(eventkey.onplayergoldchange, playergold);
39 
40             }
41 
42 
43 
44         }
45     }
46 
47 
48 
49 }
view code

 3).在事件系统的eventkey脚本中添加需要改变数据的key

 

4).写一个脚本eventtest,作用是作为改变数据而调用事件系统,相当于一个商店购买(出售)装备时,金币减少(增加),通知玩家playerinformanagertest数据中心更新数据,从而让其他(如玩家背包显示金币)脚本调用playerinformanagertest时数据一致.

 

 1 using system.collections;
 2 using system.collections.generic;
 3 using unityengine;
 4 using unityengine.ui;
 5 
 6 
 7 public class eventtest : monobehaviour {
 8 
 9     public text goldtext;
10 
11     // use this for initialization
12     void start()
13     {
14         eventdispatcher.addeventlistener<int>(eventkey.onplayergoldchange, onplayergoldvaluechange);
15     }
16 
17     void onplayergoldvaluechange(int gold)
18     {
19         goldtext.text = gold.tostring();
20     }
21 
22     // update is called once per frame
23     void update() {
24 
25     }
26     private void ondestroy()
27     {
28         eventdispatcher.removeeventlistener<int>(eventkey.onplayergoldchange, onplayergoldvaluechange);
29 
30     }
31 
32     public void onclicktoaddgold()
33     {
34         playerinfomanagertest.instance.playergold += 100;
35     }
36 }
view code

 

5).在unity中添加button和金币text文本,挂载脚本实现.

 

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网