02-ET框架的ECS编程思想

这篇具有很好参考价值的文章主要介绍了02-ET框架的ECS编程思想。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TIPS:
本系列贴仅用于博主学习ET框架的记录



前言

今天来学习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文件夹。
02-ET框架的ECS编程思想
(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文件夹。
02-ET框架的ECS编程思想
(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文件。
02-ET框架的ECS编程思想
(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编译通过即可运行。
02-ET框架的ECS编程思想
02-ET框架的ECS编程思想


总结

理解ET框架中的ECS编程思想来说还是相对简单的。文章来源地址https://www.toymoban.com/news/detail-475857.html

到了这里,关于02-ET框架的ECS编程思想的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之010 week02 01-01 最简单的排序算法-选择排序法的设计思想

    接下类,我们学习另外一类非常基础的算法,即排序算法。 排序算法是计算机科学领域研究的非常深入的一类算法,排序这个动作本身也是非常重要的, 很多时候面对无需的数据,首先需要做的就是对他们进行排序。 排序算法——目的:让数据有序。 排序算法——种类:种

    2023年04月21日
    浏览(48)
  • Unity常见框架探索-ET框架探索

    简介 ET框架是类ECS的一个Unity前后端框架 论坛地址为:https://et-framework.cn Git地址为:https://github.com/egametang/ET Unity程序集的使用 本文将会以7.2版本进行分析。所以直接clone github上的仓库,将工程导入到本地,之后将分支切换到最新的release分支,\\\"release7.2\\\" ET-ChangeDefine-ADD_ENABLE

    2024年02月09日
    浏览(30)
  • ET框架(一)

    cmd 输入验证  dotnet --version   path :添加  cmd  输入mongo 验证 Unity 2020.3.35f1c2 安装Rider =》取消波浪线 show context action=》configtion ispection sevity 运行: 重新编译Unity mono和Client-Server 服务器日志: 打开Unity项目 设置为Mono 使用Tool-Buidl Code 重新编译  打包运行 发现打包报错: 安装

    2024年02月12日
    浏览(30)
  • ET框架解读其一

    版本属于5.0 ECS? 真正的ECS属于是entity-component-system 组件里面只有数据没有方法,system里面是针对组件的方法,system通过查找只需要关注自己想关注的组件集合就可以。 但是ET框架的代码在组件里面写满了方法,有数据又有方法的组件,随时可拆卸,像什么?没错 是Unity的组

    2024年02月09日
    浏览(45)
  • ET介绍——浅谈AI框架

    AI在游戏中很多,但是为什么大家总是感觉ai编写起来十分困难,我后来思考了一番,主要原因是使用的方法不当。之前大家编写ai主要有几种方案: 我是不知道谁想出来这个做法的,真是无力吐槽。本来对象身上任何数据都是状态,这种方法又要把一些状态定义成一种新的节

    2024年02月05日
    浏览(28)
  • ET框架6.0分析三、网络通信

    ET框架的消息机制贯彻始终,包含Entity消息(Awake,Update ...),自定义(Customer)消息,网络消息等。而ET系统的进程包含了客户端、Gate等各种类型的服务器,进程包含各种服务器客户端之间通过网络消息进行通信进行工作。 结构图为了更加明确整体关系,进行了一定程度的简化

    2024年02月08日
    浏览(23)
  • Linux网络编程(epoll的ET模式和LT模式)

    本篇文章主要来讲解epoll的ET模式和LT模式,epoll中有两种模式可以选择一种是ET模式(边缘触发模式),另一种是LT模式(水平触发模式) 在水平触发模式下,当一个文件描述符上的I/O事件就绪时,epoll会立即通知应用程序,然后应用程序可以对就绪事件进行处理。即,只要文件描述

    2024年02月12日
    浏览(32)
  • ET介绍——更为便捷高效的AI框架-行为机(Behavior Machine)

    顾名思义,类比状态机每个节点是一个状态,行为机每个节点是描述一种行为。行为机每个节点之间是互斥的,并且节点相互之间完全不用关心是怎么切换的。这里就不讲状态机跟行为树是怎么做ai的了,这里只讲用行为机怎么做一个ai。举个例子 mmo中的小怪策划案,大致会

    2024年02月05日
    浏览(32)
  • 【Tars-go】腾讯微服务框架学习使用02-- http 服务

    官方文档说http这里是在net/http原生包的基础上做了修改。 官方给的案例: 可以看到 在初始化了 TarsHttpMux , 再将 TarsHttpMux 注册到tars框架中作为servant就可以启动http服务。 TarsHttpMux 是什么: 可以看出 TarsHttpMux 确实就只是对 http.ServeMux 做了个包装加入了 Conf 并加入了上报状态信

    2024年04月16日
    浏览(31)
  • 了解ET模式和LT模式:Linux网络编程中的事件触发方式

    当谈到Linux网络编程中的ET(边缘触发)模式和LT(水平触发)模式时,我们需要理解它们在事件驱动编程中的作用和区别。下面是一篇详细解释这两种模式的博文,包含代码示例。 摘要: 在Linux网络编程中,ET(边缘触发)模式和LT(水平触发)模式是两种常用的事件触发方式

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包