解读GitHub EntityComponentSystemSamples

出自Unity官方的ECS项目示例,该项目的第一次Commit是在2018年3月20号,距离现在一年半的时间,这期间ECS本身的生态在快速发展,稳定性也是逐步提升,期待在2020年的Unity版本中作为正式组件发布。好了,下面进入正题~ 对该项目的README做简单翻译和总结。
欢迎
欢迎来到DOTS样品资源!
在这里,您可以找到今天开始使用这些新系统构建所需的资源。
我们还提供了一个论坛,您可以在其中找到更多信息并与这些新系统分享您的经验。
什么是面向Unity数据的技术堆栈?
我们一直在研究一种新的高性能多线程系统,这将使游戏能够充分利用当今可用的多核处理器而不会出现繁重的编程问题。面向数据的技术栈包括以下主要系统:
- 该实体组件系统提供了一种默认编写高性能的代码。
- 在C#作业系统提供了一种方法来运行多个CPU内核并行游戏代码
- 该突发编译一个新的数学感知,后台编译器调整的产生高度优化的机器代码。
通过这些系统,Unity可以为您正在编译的平台的特定功能生成高度优化的代码。
Entity Component System
实体组件系统提供了一种更好的游戏设计方法,使您可以专注于您正在解决的实际问题:组成游戏的数据和行为。它利用C#Job System和Burst Compiler使您能够充分利用当今的多核处理器。从面向对象的设计转向面向数据的设计使您可以更轻松地重用代码,并使其他人更容易理解和处理代码。
实体组件系统作为实验包提供,目前支持Unity 2018.3及更高版本。重要的是要强调实体组件系统不是生产就绪的。(译者注:ECS目前是预览版发布,其稳定性还不能应用于生产环境~)
C# Job System
新的C#作业系统以安全简便的方式利用多个核心。简单,因为它旨在将此方法打开到用户脚本,并允许您编写安全,快速,有效的代码,同时提供保护,以防止多线程的一些陷阱,如竞争条件。
C#作业系统是Unity 2018.1+中包含的内置模块。
Burst
Burst是一种新的基于LLVM的数学感知后端编译器。它将C#作业编译为高度优化的机器代码,利用您正在编译的平台的特定功能。
Burst是一个实验包,目前支持Unity 2018.3及更高版本。重要的是要强调Burst没有准备好生产。
观看Joachim Ante在Unite Austin展示这些新系统
样例
为了帮助您入门,我们提供了此示例存储库,用于学习如何大规模编写系统。
HelloCube
这是一组展示Unity ECS架构绝对基础的项目:
- ForEach - 创建一对旋转立方体。此示例演示了使用System和Components分离数据和行为。
- IJobForEach - 使用基于作业的系统构建在ForEach示例上。基于IJobForEach的系统是推荐的方法,可以利用可用的CPU内核。
- IJobChunk - 演示如何使用IJobChunk编写系统。IJobChunk是处理组件的推荐方法,用于比简单IJobForEach可以描述的更复杂的情况。
- SubScene - 演示如何在Unity编辑器中使用SubScenes创建和修改实体。
- SpawnFromMonoBehaviour - 演示如何基于Prefab GameObject从MonoBehaviour函数中生成多个实体。
- SpawnFromEntity - 演示如何使用系统中的生成作业在运行时生成多个实体。
- FluentQuery - 演示如何使用流畅查询来选择要更新的正确实体集。
- SpawnAndRemove - 演示产生和从世界中删除实体。
Boids
Boids示例提供了包含数千个实体的更复杂场景。Boids模拟水下场景,鲨鱼和学校包含数千条鱼。(它使用经典的Boids植绒算法来教育鱼类行为。)
空白ECS项目安装指南
- 打开Unity编辑器(
2019.1.0f1或更高版本) - 创建一个新项目。
- 打开包管理器(菜单:Window > Package Manager)。
- 单击窗口顶部的“ 高级”按钮,然后启用“ 显示预览包”选项。
- 将以下包添加到项目中:
- Entities
- Hybrid.Renderer
将实体包添加到项目中还会添加以下包:
- Burst
- Collections
- Jobs
- Mathematics
注意:您可以使用Unity Hub在同一台计算机上安装多个版本的Unity。
文档
寻找有关如何入门或具体问题的信息?访问我们的ECS和工作系统文档。
(原文链接:https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/README.md)
解读GitHub EntityComponentSystemSamples的更多相关文章
- 搜刮一些开源项目的APP
iOS完整App资源收集 <iOS完整app资源收集> <GitHub 上有哪些完整的 iOS-App 源码值得参考?> <GitHub 上有哪些完整的 iOS-App ...
- GitHub上README写法暨markdown语法解读
原文: GitHub上README写法暨markdown语法解读 自从开始玩GitHub以来,就 越来越 感觉它有爱.最近对它的 README.md 文件颇为感兴趣.便写下这贴,帮助更多的还不会编写R ...
- SDWebImage源码解读之SDWebImageCache(下)
第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极 ...
- AFNetworking 3.0 源码解读 总结(干货)(上)
养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetwo ...
- MJRefresh 源码解读 + 使用
MJRefresh这个刷新控件是一款非常好用的框架,我们在使用一个框架的同时,最好能了解下它的实现原理,不管是根据业务要求在原有的基础上修改代码,还是其他的目的,弄明白作者的思路和代码风格,会受益匪浅 ...
- AFNetworking 3.0 源码解读(三)之 AFURLRequestSerialization
这篇就讲到了跟请求相关的类了 关于AFNetworking 3.0 源码解读 的文章篇幅都会很长,因为不仅仅要把代码进行详细的的解释,还会大概讲解和代码相关的知识点. 上半篇: URI编码的知识 关于 ...
- AFNetworking 3.0 源码解读(四)之 AFURLResponseSerialization
本篇是AFNetworking 3.0 源码解读的第四篇了. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager AFNetworking 3 ...
- AFNetworking 3.0 源码解读(五)之 AFURLSessionManager
本篇是AFNetworking 3.0 源码解读的第五篇了. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager AFNetworking 3 ...
- YYModel 源码解读(二)之NSObject+YYModel.h (1)
本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...
随机推荐
- [JLOI2009]神秘的生物——轮廓线DP
原题链接 题目大意 \(n\times n\)的带权方阵,选一个权值最大的连通块 Solution 一眼连通性DP,然后就没了 转移很好想的啦,简单讨论一下就行了 有一个坑点,就是不能一个格子都不选, ...
- Circular view path [mydemo]: would dispatch back to the current handler URL [/mydemo] again. Check your ViewResolver setup!
简单创建一个springboot工程 pom.xml <?xml version="1.0" encoding="UTF-8"?><proje ...
- [React] Reduce Code Redundancy with Custom React Hooks
In this lesson, we'll cover how to create a custom React hook for managing the state of any input. T ...
- 移动端H5开发问题记录
1. 当弹出键盘时,会改变页面高度,影响页面样式 通过window.onsize事件可以控制键盘弹出或消失的时候的样式 var h = document.body.scrollHeight // 用o ...
- 36. ClustrixDB 使用ClustrixDB加密连接
ClustrixDB使用sha256_password插件支持SSL和身份验证. 一些安全规则要求对存储在数据库中的用户密码进行更强的保护.与默认的mysql_native_password插件相比, ...
- 04 JQuery的使用
01 对网站首页优化--定时弹出广告 <!-- 作者:offline 时间:2018-09-09 描述:在使用JQ前要导入jquery-1.11.0.min.js包 注意区分js和jq的对象 - ...
- Luogu P5018 对称二叉树 瞎搞树&哈希
我的天..普及组这么$hard$... 然后好像没有人用我的垃圾做法,,,好像是$O(n)$,但十分的慢,并且极其暴力$qwq$ 具体来说,就是直接$dfs$求出树高,然后想像出把原来的树补成满二叉树 ...
- Django基础之render()
结合一个给定的模板和一个给定的上下文字典, 并返回一个渲染后的HttpResponse对象. 参数: request: 用于生成响应的请求对象 template_name: 要使用的模板的完整名称, ...
- 一、微服务(Microservices)【翻译】
1.微服务 “微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务.目前,这种架构方式还没有准确 ...
- ACM之路(14)—— 线段树的日常(上)
我的线段树简直有毒,各种错误都能忙上半天.做了kuangbin的线段树专题的一半,还有一半留到以后去做. 链接:http://acm.hust.edu.cn/vjudge/contest/view.a ...