游戏引擎 活跃维护

Entitas

sschmid/Entitas

Entitas 是一个超快速的实体组件系统(ECS)框架,专门为 C# 和 Unity 制作

7678
Stars 标星
1128
Forks 分支
397
Watchers 关注
97
Open Issues
C#
主要语言
MIT
开源协议
83.7 MB
仓库大小
2 年前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:sschmid/Entitas
git clone https://github.com/sschmid/Entitas.git
git clone git@github.com:sschmid/Entitas.git
README.md main

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

Entitas 是免费的,但由……提供支持 您的捐赠

Entitas - 用于 C# 和 Unity 的实体组件系统框架

Entitas 是最受欢迎的开源实体组件系统框架(ECS),专为 C# 和 Unity 创建。为了在垃圾回收环境中实现最佳性能并减轻垃圾回收器的负担,进行了多项设计决策。Entitas 还附带一个可选的代码生成器,能大幅减少你需要编写的代码量,并让你的代码像优美的散文一样易读。

为什么选择 Entitas

视频教程和 Unity Unite 演讲

视频 标题 资源
Entitas ECS Unity 教程 - Git 与单元测试
Entitas ECS Unity 教程 - 设置与基础
2016 年 Unite Europe:Unity 实例中的 ECS 架构 SlideShare: 2016 年 Unite Europe
2015 年 Unite Europe:Unity 的实体系统架构 SlideShare: 2015 年 Unite Europe

初窥

可选的 代码生成器 让你编写的代码超级快速、安全,并且直观地展现其意图。

var entity = context.CreateEntity();
entity.AddPosition(Vector3.zero);
entity.AddVelocity(Vector3.forward);
entity.AddAsset("Player");
using static GameMatcher;

public sealed class MoveSystem : IExecuteSystem
{
    readonly IGroup<GameEntity> _group;

    public MoveSystem(GameContext context)
    {
        _group = context.GetGroup(AllOf(Position, Velocity));
    }

    public void Execute()
    {
        foreach (var e in _group.GetEntities())
            e.ReplacePosition(e.position.value + e.velocity.value);
    }
}

概览

Entitas 运行快速,轻量,并且去除了不必要的复杂性。为了让你的游戏或应用快速启动,你只需要了解不到五个类:

  • 上下文
  • 实体
  • 组件
  • 群组
Entitas ECS

+-----------------+
|     Context     |
|-----------------|
|    e       e    |      +-----------+
|       e      e--|----> |  Entity   |
|  e        e     |      |-----------|
|     e  e     e  |      | Component |
| e          e    |      |           |      +-----------+
|    e     e      |      | Component-|----> | Component |
|  e    e    e    |      |           |      |-----------|
|    e    e     e |      | Component |      |   Data    |
+-----------------+      +-----------+      +-----------+
  |
  |
  |     +-------------+  Groups:
  |     |      e      |  Subsets of entities in the context
  |     |   e     e   |  for blazing fast querying
  +---> |        +------------+
        |     e  |    |       |
        |  e     | e  |  e    |
        +--------|----+    e  |
                 |     e      |
                 |  e     e   |
                 +------------+

阅读全文...

代码生成器

代码生成器为你生成类和方法,让你可以专注于完成工作。它大幅减少了你必须编写的代码量,并显著提高可读性。它使你的代码更不容易出错,同时确保最佳性能。

阅读全文...

Unity 集成

可选的 Unity 模块“可视化调试”将 Entitas 很好地集成到 Unity 中,并提供强大的编辑器扩展,用于检查和调试上下文、组、实体、组件和系统。

阅读全文...


Entitas 深入探讨

阅读维基 或查看 示例项目 来了解 Entitas 的实际应用。这些示例项目展示了系统、组、收集器和实体如何无缝协作。

» 下载和安装

» 视频教程和 Unity Unite 讲座

» 维基和示例项目

» 提问


下载并设置 Entitas

GitHub 发布版(推荐)

显示发布版

Unity 包管理器

即将推出

NuGet

Entitas 及所有依赖项都可以作为 NuGet 包 获取。更详细的说明即将推出。

Unity 资源商店(已弃用)

Unity 资源商店上的 Entitas 已弃用,将不再更新。资源商店中可用的最后一个版本是 1.12.3,可免费下载。请参阅讨论 Entitas turns 7 - and is FREE now

感谢

特别感谢 @mzaks、@cloudjubei 和 @devboy 不眠不休的讨论以及帮助使 Entitas 更加出色!

维护者

不同语言?

Entitas 可用于

本站来源与版权声明
  • 本文标题:Entitas - Entitas 是一个超快速的实体组件系统(ECS)
  • 本文链接:https://www.cn121.com/gameengine/sschmid-entitas.html
  • 原项目:sschmid/Entitas 版权归原作者 sschmid 及贡献者所有
  • 收录信息:本站于 2026-09-30 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 sschmid/Entitas。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。