本文主要是介绍ET框架学习——UIComponent组件和UI组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
UI组件继承自Entity,接通了Awake事件,执行Awake方法。内部维护了一个GameObject和一个Dictionary<string, UI> children字典。 Awake(GameObject gameObject)方法,会清空字典,并且给GameObject赋值。
内部还有三个对字典操作的方法。Add(UI ui)方法向字典中添加元素,同时将该组件设置为ui对象的Parent。Remove方法从字典中移除指定的元素。Get方法,从字典返回指定名字的UI对象,若是字典中没有指定对象,则从GameObject对象中按照名字查找指定的子对象,如果还是没有找到,就返回空,否则就根据找到的对象,使用ComponentFactory,创建UI组件,并且添加到字典中,返回。
-
UI组件
-
UIComponent组件
UIComponent组件继承自Componet组件,接通了Awake事件和Load事件,分别执行Awake方法和Load方法。
UIComponent组件维护了一个Root,即所有UI的最终父对象,Dictionary<string, IUIFactory> UiTypes和Dictionary<string, UI> uis两个字典。其中,IUIFactory是一个接口,如下所示,内部提供了一个Create方法和Remove方法。
public interface IUIFactory
{UI Create(Scene scene, string type, GameObject parent);void Remove(string type);
}
Awake方法中,获取了场景中的Global/UI这个对象,设置为Root对象。同时执行Load方法,该方法,获取所有持有UIFactoryAttribute特性的类,然后遍历获取UIFactoryAttribute特性,判空UiTypes字典中是是否有该特性类型。创建持有UIFactoryAttribute特性类的对象,因为UIFactoryAttribute特性修饰的类都是实现了IUIFactory接口,然后判空,对象不为空,则将该对象添加进UiTypes字典中去,键则是UIFactoryAttribute特性类型。
Create方法则是根据特性类型创建UI组件对象。在UiTypes字典中查找指定特性类型的对象,然后指定该对象重写的Create方法(对象实现了IUIFactory接口)。同时将创建出来的UI组件,添加到uis字典中。然后设置该UI组件的canvas,就是设置UI的层级。
另外就是一些对uis字典的操作,包括Add,Remove,Get等方法。
这篇关于ET框架学习——UIComponent组件和UI组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!