基于Unity3D的ECS框架的设计与实现

来源 :上海交通大学 | 被引量 : 0次 | 上传用户:aerostock
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
ECS(Entity-Component-System)是一种主要用于游戏开发的软件开发架构,主要由Entity(实体)、Component(组件)和System(系统)三部分组成。实体是对游戏内部需要逻辑控制的物体的抽象,在每个实体上都挂载了若干个组件。组件是数据的集合但不携带逻辑。系统在ECS架构中承担了所有的逻辑代码。在ECS架构中通常倾向于使用组合而不是继承,这样可以让代码结构更加灵活。为了降低代码的耦合度、提高开发效率、增强程序的可扩展性和适应游戏开发中的快速迭代,本文在ECS架构的基础上设计并实现了一个基于Unity引擎的ECS框架。ECS框架支持Unity5.x及后续版本,它部署简单并对Unity的多个模块进行了扩展,封装程度高,开发者可以迅速掌握开发流程。框架内部引入了响应式编程,能提升高交互性应用的开发效率以及代码运行速度,引入了依赖注入功能,能提高代码的可复用性以及模块化程度。在框架中构建了基于数据流的响应式事件系统,不仅可以降低框架内部的耦合度,还可以将其注入开发者自己的应用中以处理各种事件消息。本文的主要研究成果包括:(1)定义了一系列用于实现ECS架构的接口,解决了传统游戏开发中类继承混乱无序的问题,并且提供了一套依赖管理机制,让获取游戏对象引用的过程更加简单明确。(2)引入了外部框架解决非核心业务。ECS框架使用Zenject作为依赖注入工具,开发者在使用框架时可以自由的替换接口实现。使用嵌入Uni Rx作为响应式编程工具,整个框架都使用了响应式编程并提供给开发者使用,可以有效处理游戏中的频繁交互。(3)实现了定义好的ECS架构的接口,完成ECS框架核心功能。ECS框架可以提高代码的模块化程度,降低各功能间的耦合度,提高游戏迭代开发的效率。(4)提供一套开发工具集,如事件系统,让开发者能够在整个游戏中方便的传递任意事件,减少不必要的耦合;实体和组件的序列化工具,用以传递网络信息和存档;动画器响应式扩展,以便更加高效地处理动画事件和控制动画表现;集体和预制体的工厂,用以动态创建集体和预制体。(5)建立一套便捷的部署流程,让开发者能够在引擎中快速搭建ECS框架。为了让传统的开发者快速上手,提供一套简易的API,同时在Unity层提供一层封装。
其他文献
东莞,这个拥有834万常住人口的城市,是广东历史文化名城,岭南文明的重要发源地,中国近代史的开篇地和改革开放的先行地。在习近平中国特色社会主义新时代,东莞以开放型经济新
报纸
短肠综合征(short bowel syndrome,SBS)是由各种原因导致的小肠消化吸收面积大量减少而引起消化、吸收功能不良的一组临床症候群。SBS的发病率低,约为3%,除少数是先天性短肠外,绝大
目的 研究血管紧张素(1-7)[Ang(1-7)]对血管紧张素Ⅱ(AngⅡ)诱导的人脐静脉内皮细胞(hUVEC)E选择素和单核细胞趋化蛋白1(MCP-1)表达的影响,并初步探讨Ang(1-7)的作用机制,阐明Ang(1-7)对AngⅡ
基于虚拟样机技术在SIEMENSNX软件环境下对正时齿轮参数化建模,采用NX软件的FEA模块分析了正时齿轮受弯曲载荷下的变形和应力,并对分析结果进行了误差分析。在同一软件环境中
<正>小学阶段是人一生学习的基础阶段,也是一个人形成良好学习习惯的关键时期。低年级学生完成作业的习惯不仅直接影响到儿童整个学习发展的历程,而且将会影响其一生的成长历
会议
提出了一种基于模块化的软件可靠性预测模型。该模型采用马尔可夫链来描述软件系统控制转移的动态特性,根据模块的可靠性和模块在系统中的重要性来研究软件的整体可靠性,以达
以往的永磁除垢器的磁场设计多为手算和经验性计算,设计手段繁琐陈旧,笔者以有限元为手段,以ANSYS软件包为工具,针对某厂实际产品进行了永磁除垢器的磁场分析,并对所作分析进行了