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

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase