ET框架学习——UIComponent组件和UI组件

2024-04-16 21:58

本文主要是介绍ET框架学习——UIComponent组件和UI组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       UI组件继承自Entity,接通了Awake事件,执行Awake方法。内部维护了一个GameObject和一个Dictionary<string, UI> children字典。 Awake(GameObject gameObject)方法,会清空字典,并且给GameObject赋值。

       内部还有三个对字典操作的方法。Add(UI ui)方法向字典中添加元素,同时将该组件设置为ui对象的ParentRemove方法从字典中移除指定的元素。Get方法,从字典返回指定名字的UI对象,若是字典中没有指定对象,则从GameObject对象中按照名字查找指定的子对象,如果还是没有找到,就返回空,否则就根据找到的对象,使用ComponentFactory,创建UI组件,并且添加到字典中,返回。

  • UI组件 

  • UIComponent组件

       UIComponent组件继承自Componet组件,接通了Awake事件和Load事件,分别执行Awake方法和Load方法。

       UIComponent组件维护了一个Root,即所有UI的最终父对象,Dictionary<string, IUIFactory> UiTypesDictionary<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组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/910005

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert