ET6框架(五)ECS组件式编程

2024-08-30 09:12
文章标签 组件 编程 框架 ecs et6

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

在这里插入图片描述

文章目录

  • 一、什么是ECS:
  • 二、ECS编程原则:
  • 三、组件生命周期:


一、什么是ECS:

ECS即Entity、Component、System的简称,遵循组合优于继承的原则
Entity(实体) : 实体是一个概念,是指存在你游戏世界中的一个独立物体,是一系列组件的集合。
Component(组件) : 一个组件是堆数据的集合,不存在行业,只用于储存状态。
System(系统) : 一个系统就是对拥有或多个相同组件的操作工具,只有行为没有状态也不做存储。

(切记:切勿与Unity Dots中的ECS进行混淆,两者没有一点关系)


二、ECS编程原则:

1.实体即是组件,组件即是实体。
2.如要编写一个新的实体或组件,绝不继承除了Entity之外的任何父类。
3.绝对不使用任何虚函数,使用逻辑分法代替。
4.Model和ModelView只存实体和组件的数据字段声明,非必要绝不放任何逻辑函数。
5.Hotfix和HotfixView中只保留纯逻辑函数,也就是使用静态类和扩展方法编写的System,且绝不允许存放任何数据及字段。
6.Model和Hotfix中绝不允许出现跟Unity3d引擎相关的游戏对像类和调用相关的API函数。
7.如实体或组件有数据字段志明必须编写相关生命周期函数,以防实体对像池回收再利用导至逻辑错误。
在这里插入图片描述


三、组件生命周期:

我可以可以尝试在Unity.Model模块的Codes > Model > Demo > Computer(自行创建) 中创建Computer.cs脚本
在这里插入图片描述

在脚本中编写组件,在组件中可编写:
组件需要继承:Entity,后面分别是生命周期接口IAwake,IUpdate,IDestroy
在这里插入图片描述

在Unity.Hotfix模块Core > Hotfix > Computer(自行创建) 中创建脚本 ComputerSystem
在Start函数中可以添加组件,然后需要添加载ComputerAwakeSystem、ComputerUpdateSystem、ComputerDestorySystem
分别继承AwakeSystem,UpdateSystem,DestroySystem
在这里插入图片描述

在Unity.HotfixView 模块中 Demo > UI > UILogin > AppStartInitFinish_CreateLoginUI.cs脚本中
该脚本在开始登录界面初始化完成后执行
可以调用Start()及Dispost()函数
在这里插入图片描述

再在工程中选择Tools > Build > BuildCodeDebug
在这里插入图片描述

编译成功后运行程序
在这里插入图片描述


这篇关于ET6框架(五)ECS组件式编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

四种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前言

基于Qt Qml实现时间轴组件

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

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

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

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom