解读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 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...
随机推荐
- 转:SpringBoot 自定义异常@ContollerAdvice ExceptionHandler不起作用
原文链接:https://blog.csdn.net/evanxuhe/article/details/78650979 为了统一异常,我们通常定义一个统一管理所有Exception,包括自定义Exc ...
- LVM卷管理
一.LVM是做什么的 LVM ( Logical Volume Manager ,逻辑卷管理器)LVM 是建立在磁盘和分区之上的一个逻辑层,用来提高磁盘分区管理的灵活性.LVM 可以对磁盘分区按照组的 ...
- 牛客CSP-S提高组赛前集训营3
A 货物收集 显然是一个二分答案的题. #include<iostream> #include<cstdio> #include<cstring> #include ...
- Codeforces Round #452 (Div. 2) 899E E. Segments Removal
题 OvO http://codeforces.com/contest/899/problem/E Codeforces Round #452 (Div. 2) - e 899E 解 用两个并查集(记 ...
- Centos创建用户并授权
创建新用户 [root@VM ~]# adduser it为这个用户初始化密码,linux会判断密码复杂度,不过可以强行忽略:[root@VM_~]# passwd itChanging passwo ...
- BZOJ 1922: [Sdoi2010]大陆争霸 Dijkstra
Code: #include <queue> #include <vector> #include <cstdio> #include <cstring> ...
- 【luoguP4124 】[CQOI2016]手机号码
题目描述 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售.为了便于前 ...
- vue-cli 本地代理 造成session丢失 而登录不上去 解决办法
本地代理造成session丢失,登录不成功,是由于代理配置造成的 devServer: { port: 8000, proxy:{ '/qiantai':{ target:'线上地址/qiantai' ...
- Django-CRM后台管理系统
crm整体流程 表结构 from django.db import models # Create your models here. from django.contrib.auth.models ...
- Pytest学习笔记(二) 用例执行规则
在用pytest执行用例时,可以按照如下场景来执行 1.执行目录及其子目录下的所有用例 pytest filename\ 2.执行某一个py文件下的用例 pytest filename.py 3.-k ...