Ecsrx: 一个reactive为.net游戏开发人员提供的ECS模式 您所在的位置:网站首页 adblockfast Ecsrx: 一个reactive为.net游戏开发人员提供的ECS模式

Ecsrx: 一个reactive为.net游戏开发人员提供的ECS模式

#Ecsrx: 一个reactive为.net游戏开发人员提供的ECS模式| 来源: 网络整理| 查看: 265

EcsRx

EcsRx是对普通ECS模式的一种反应式的采用,它使用rx并遵循IoC和其他合理的设计模式。

Features 遵循简单的ECS接口 全反应式体系结构 喜欢组合胜过继承 坚持控制权倒置 Lightweight codebase 对事件的内置支持(提高自己的能力并对其作出反应) 内置池支持(易于添加自己的实现或包装第三方池工具) 对插件的内置支持(打包您自己的组件/系统/事件并与其他人共享)

核心框架主要用于.net应用程序/游戏,这里有一个unity特定的版本,目前正在移植以使用此版本。

Installation

该库是为支持.net标准2.0而构建的,因此您只需引用程序集,并包含兼容的rx实现。

Quick Start

建议查看安装文档,这涵盖了使用它来设置应用程序的两种方法,而不使用helper库,或者使用helper库来为您提供依赖注入和其他好处。

如果您使用的是unity,建议您忽略这里的所有内容,使用ecsrx.unity存储库上的说明,因为它还没有完全映射到使用这个核心版本上,所以它自己的生态系统也没有完全映射,直到跳转完成。

Simple components public class HealthComponent : IComponent { public int CurrentHealth { get; set; } public int MaxHealth { get; set; } }

您可以实现IComponent接口,该接口将类标记为组件,并且如果您希望处理如下内容,则可以选择实现IDisposable:

public class HealthComponent : IComponent, IDisposable { public ReactiveProperty CurrentHealth { get; set; } public int MaxHealth { get; set; } public HealthComponent() { CurrentHealth = new ReactiveProperty(); } public void Dispose() { CurrentHealth.Dispose; } }

任何标有IDisposable的组件都将由实体自动处理。

Simple systems public class CheckForDeathSystem : IReactToEntitySystem { public IGroup TargetGroup => new Group(typeof(HealthComponent)); // Get any entities with health component public IObservable ReactToEntity(IEntity entity) // Explain when you want to execute { var healthComponent = entity.GetComponent(); return healthComponent.CurrentHealth.Where(x => x entity); } public void Process(IEntity entity) // Logic run whenever the above reaction occurs { entity.RemoveComponent(); entity.AddComponent(); } }

系统是常规的,因此有许多内置类型,如IReactToEntitySystem、IReactToGroupSystem、IManualSystem和许多其他类型,但是您可以在docs/Systems中了解它们,您可以通过扩展ISystem来添加自己的常规系统,系统由ISystemExecutor为您处理。

查看示例以了解更多的用例,以及ecsrx的unity风格(它有更多的示例和演示项目),并进入discord频道询问任何问题。

Running Examples

如果您想运行示例,那么只需克隆它并打开src文件夹中的examples项目,然后运行示例,随着库的成熟,我将尝试添加到。

随着项目的发展,还有一套测试正在扩展,它是在考虑可测试性的前提下编写的。

关于基础设施/视图名称空间和未来的注意事项

这个库最初是作为一个unity特定的项目开始的,但是现在已经转移到了一个通用的.net库中,因此从unity层向下到核心的功能移动是增量的。

现在,我们已经添加了底层基础结构模块(主要用于EcsRxApplication和依赖注入概念),而通用视图模块也被移到了这里。虽然这两个库都提供了一个踏脚石来更快地启动和运行,但不幸的是,它们并不像只包含和关闭你的程序那么简单。

examples文件夹显示了如何创建自己的应用程序实现的示例,但希望在整个Rx世界中事情都解决后,随着我们开始添加另一层,这一领域将得到更大的改进,这将使您只需进入并离开(如unity版本)。

如果你想知道更多关于这个不和谐的聊天,我们可以讨论更多。

Docs

有一本书涵盖了以下主要部分:

这基本上只是一个奇特的查看器中的docs文件夹



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有