框架解读
GF组件和模块的关系
1.组件挂在物体上,继承Mono,初始化时候自动注册组件,存储在了容器中。(获取组件):通过遍历链表,一一对比Type,获得组件。
2.模块通常是各种Manager,从各自的组件中Start或Awak中通过接口的Type去获取Manager。
事件订阅
0.Awake时候UIComponent绑定了m_UIManager.OpenUIFormSuccess += OnOpenUIFormSuccess/OnOpenUIFormFailure/OnOpenUIFormUpdate/OnOpenUIFormDependencyAsset/OnCloseUIFormComplete
各种委托。
1.先订阅,传入唯一哈希值及回调函数。
GameEntry.Event.Subscribe(OpenUIFormSuccessEventArgs.EventId, OnOpenUIFormSuccess); GameEntry.UI.OpenUIForm(UIFormId.MenuForm, this);
会触发awake的成功事件委托
2.在EventPool中m_EventHandlers.Add(id, handler);将ID和函数存入字典中,Fire后将ID值存入队列m_Events中,然后Update轮询取出Event,然后对节点操作HandleEvent,
判断m_Events中的ID是否跟字典中的ID一致后,执行该回调函数。