1)笔记
1)甚么叫做事件监听与分发?
(1)游戏UI有金币、道具、血的数量...
2)问题的提出:
(1)游戏逻辑中,不同的地图,关卡或场景,当他们捡到这些金币、道具、血块的时候,
怎样在UI界面上显示出来呢?
(2)每一个游戏逻辑,都要hold住: 金币对应的label呢? 由于:游戏逻辑
中的东西和UI界面上的label绑在了一起,非常的不便利!
3)问题的解决:
(1)设计一个全局的 事件宣布与定阅体系,所有的都是通过这个体系来做;
(2)界面上的UI代码,通过定阅金币转变的事件,当有这个事件产生的时候,
会修正金币的显示;
(3)那末在游戏逻辑中,当我们捡到金币的时候,我们不直接告知UI,把这个
事件传递给对事件感兴致的人;
(4)当我们在游戏中捡到金币的时候,宣布一个金币变更的事件丢给事件体系,
然后事件体系会通知感兴致的所有代理;
4)实现:
(1)事件分类管理表: 用 `字典` 存储;
(2)事件定阅、事件派送;
(3)定阅事件的回调函数都会被调用;
5)managers文件夹
event_manager
sound_manager
res_manager
net_manager
ui_manager
6)用普通单例模式便可
(1)由于事件分发,不须要借助节点和组件这个机制,用全局的便可以够了;
(2)当对事件感兴致的时候,就添加一个事件的回调函数 delegate;
(3)string name, object udata: 假定你传递甚么事件过来,甚么数据过来,
我们都可以应用object来处置, 也就是: System.Object,不是Unity.Object
(object)100
7)我们的UI不知道外面的逻辑时是怎样样的,只要有金币的事件过来了,我们就更新一下;
我们不须要知道UI究竟是谁,是哪几个节点负责显示这个金币,只须要派生这个事件就有了;
8)宣布就是遍历所有的代理,调用他们的回调函数;
9)app停掉的时候,OnDestroy也会被调用;
10)实质:
(1)弄个字典,把类型和回调函数到一起;
(2)宣布一个事件,就是调用这个事件监听的每一个个回调函数;
(3)定阅一个事件,就是把delegate加到字典中;
(4)当事件产生的时候,统一调用;
(5)test_ui和game_scene他们2个就彼此不知道谁去应用,我只管宣布
谁对这个这个事件感兴致的人去吸收便可,我只用期待事件过来,
我也不管事件是谁发的,我准确的显示就行了;
1)甚么叫做事件监听与分发?
(1)游戏UI有金币、道具、血的数量...
2)问