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

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

PyQt6中QMainWindow组件的使用详解

《PyQt6中QMainWindow组件的使用详解》QMainWindow是PyQt6中用于构建桌面应用程序的基础组件,本文主要介绍了PyQt6中QMainWindow组件的使用,具有一定的参考价值,... 目录1. QMainWindow 组php件概述2. 使用 QMainWindow3. QMainW

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示