02-ET框架的ECS编程思想
TIPS:
本系列贴仅用于博主学习ET框架的记录
文章目录
- 前言
- 一、ET框架中的ECS是什么?
- 二、ET框架的ECS编程思想用法
- 1.创建ECS中的实体Entity及组件Component
- 2.创建ECS中的系统System
- 3.给实体添加组件
- 总结
前言
今天来学习OOP以外的另一种编程思想—ECS。
一、ET框架中的ECS是什么?
ECS:实体(Entity)、组件(Component)、系统(System),同时在框架中(实体即组件、组件即实体)类似电脑是一个实体,键盘是电脑的一个组件,但同时键盘也是一个实体,因为其下面还有按键这种组件。
二、ET框架的ECS编程思想用法
1.创建ECS中的实体Entity及组件Component
(1)打开ET目录下的Client-Server.sln,在Client/Unity.Model/Codes/Model/Demo文件夹下新建一个Computer文件夹。
(2)在Computer文件夹下新建一个Computer类命名空间为ET且继承Entity及IAwake接口,注意:实体只能继承Entity,如果继承Entity以外的其他类,就不是ET正规军(狗头保命)同时实体里面不能有任何的逻辑代码(好像是)。
代码如下(示例):Computer.cs
namespace ET
{public class Computer:Entity, IAwake{}
}
(3)同时也新建电脑所需的一些组件,例如电源、显示屏,同时命名空间也为ET且继承Entity及IAwake接口,使用[ComponentOf(typeof(Computer))]来说明这个组件是在Computer实体下的组件。
代码如下(示例):KeyboardComponent.cs
namespace ET
{[ComponentOf(typeof(Computer))]public class MonitorsComponent: Entity,IAwake{}
}
代码如下(示例):PCCaseComponent.cs
namespace ET
{[ComponentOf(typeof(Computer))]public class PCCaseComponent: Entity, IAwake{}
}
2.创建ECS中的系统System
(1)打开ET目录下的Client-Server.sln,在Client/Unity.Hotfix/Codes/Hotfix/Demo文件夹下新建一个Computer文件夹。
(2)在Computer文件夹下新建一个ComputerSystem类,且是静态的,实体逻辑代码写在System里)。
代码如下(示例):ComputerSystem.cs
namespace ET
{public static class ComputerSystem{public static void Start(this Computer self){Log.Debug("computer start....");//下面这两行获取组件要在实体添加了组件后才能获取到self.GetComponent<PCCaseComponent>().Power();self.GetComponent<MonitorsComponent>().Display();}}
}
(3)同时也给Computer的PCCaseComponent、MonitorsCompoent建立System。
代码如下(示例):MonitorsComponentSystem.cs
namespace ET
{public static class MonitorsComponentSystem{public static void Display(this MonitorsComponent self){Log.Debug("display show....");}}
}
代码如下(示例):PCCaseComponentSystem.cs
namespace ET
{public static class PCCaseComponentSystem{public static void Power(this PCCaseComponent self){Log.Debug("start power!!!");}}
}
3.给实体添加组件
(1)打开Client/Unity.HotfixView/Codes/HotfixView/Demo文件夹下的AfterCreateZoneScene_AddComponent.cs文件。
(2)在Run方法的末尾创建Computer实体及添加组件。
代码如下(示例):AfterCreateZoneScene_AddComponent.cs
Computer computer = zoneScene.AddChild<Computer>();
computer.AddComponent<PCCaseComponent>();
computer.AddComponent<MonitorsComponent>();
computer.AddComponent<MouseComponent>();
computer.AddComponent<KeyboardComponent>();
computer.Start();
(3)保存代码回到Unity编辑器点击键盘上的F5建等待Unity编译通过即可运行。
总结
理解ET框架中的ECS编程思想来说还是相对简单的。
02-ET框架的ECS编程思想相关推荐
- 框架设计:浅谈ECS设计思想(一)
从一开始的面向过程编程,再到后来面向对象编程.随着硬件性能的不断改进,用户对软件应用的要求也水涨船高.愈发庞大的应用不再是一个人或几个人的小团队能够完成的呢,分工愈来愈明显,逼迫着编程思想不断进步. ...
- 框架开发与编程模式编程思想的结合
自己开发的框架要满足以下条件: 1 简单,用了这个框架可以使开发周期大幅缩短,如果用框架还不如不用框架开发的简单.那么这个框架就是垃圾. 2,可拆分,框架中的任何一个有机部分都可以单独拿出来使用.而不 ...
- Java编程思想 第四版 读书笔记巩固基础,完善知识框架。
Java编程思想读书笔记 此笔记仅仅是作者的阅读此书时,发现自己错误认识和不牢固的知识,用来完善作者的知识框架,其列出重点不具有参考性,代码也是为了省工作量,简写代码,能看懂即可,语法并不规范 第一章 ...
- 游戏设计模式——面向数据编程思想
前言:随着软件需求的日益复杂发展,远古时期面的向过程编程思想才渐渐萌生了面向对象编程思想. 当人们发现面向对象在应对高层软件的种种好处时,越来越沉醉于面向对象,热衷于研究如何更加优雅地抽象出对象. 然 ...
- 嵌入式牛人 | 这些单片机编程思想超硬核
来源:面包板社区,整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 01 裸编程是什么? 先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系 ...
- Unity手游实战:ECS设计思想和Entitas插件
Unity手游实战:ECS设计思想和Entitas插件 一.ECS设计思想 ECS设计理念并不是一个新兴的事物,早在90年代就存在了.但是走入大众视野则要归功于<守望先锋>这款游戏.201 ...
- Java编程思想第四版学习总结
Java编程思想第四版学习总结 文章目录 Java编程思想第四版学习总结 第 1 章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重 ...
- 在java中三种编程思想(OOA,OOD,OOP)
在java中三种编程思想:OOA,OOD,OOP OOA 一.OOA的主要原则. 二.面向对象分析产生三种分析模型 三.OOA的主要优点 四.OOA方法的基本步骤 OOD 一.OOD背景知识 二.OO ...
- 小马哥spring编程核心思想_求小马哥讲Spring栈核心编程思想 Spring IoC+Bean+Framework教程...
这次搜集了下小马哥讲Spring栈核心编程思想 Spring IoC+Bean+Framework,最强Spring全面核心实战的视频教程,有需要的朋友可以自行下载学习. 课程简介: 小马哥出手的Sp ...
最新文章
- h5 bootstrap 小程序模板_一道面试题小程序与H5的区别
- java druid jdbc例子_JDBC【使用Druid连接数据库,DBUtils工具类的使用】
- python的环境变量设置
- redis java api 单例_Java API 操作Redis
- 2-4MySQL数据库安装与初始化
- tp5ajax即点即改,TP5中即点即改,json分页,单删
- 【更新】火星人敏捷开发手册2012-02-24新增敏捷计划内容
- Excel在表格框中插入对勾✅
- 鸿蒙系统源码获取_Hi3861_HI3516DV编译环境搭建记录
- 防火墙基本应用(华为USG6000V)
- 计算机一级安装包怎么升级,详细教您win7如何升级为sp1
- c语言实验:厘米换算英尺英寸
- 计算机网络重置,怎么重置电脑网络连接
- 作战效能评估系统模型
- excel 查找图相框或文本框中的内容
- 编译和安装gdb源码详细步骤介绍
- 没有鼠标就无法对计算机进行操作,电脑鼠标不灵敏是什么原因?怎么解决?
- 热门在线项目管理工具
- 项目管理之项目的挣值计算问题
- cubeIDE开发, UART的CubeMX及HAL库实现原理及底层分析