关于Unity 2018的实体组件系统(通用名称ECS)

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 将介绍如何在Unity上使用实体组件系统(通常称为ECS)。这次的内容是Unity提供的ECS API的基本用法,一个小应用程序和并行化。它不包括与Unity的GameObject / Component的合作,以及实际使用。

将介绍如何在Unity上使用实体组件系统(通常称为ECS)。

这次的内容是Unity提供的ECS API的基本用法,一个小应用程序和并行化。

它不包括与Unity的GameObject / Component的合作,以及实际使用。
获取可以使用ECS的编辑器
Unity2018 和之后的版本都可以!
创建一个可以使用ECS的项目
要启用ECS,需要两件事。
· 使使用 .NET 4.x
· 重写 manifest.json
正常启动Unity并打开 Edit> PlayerSettings> PlayerSettings。
之后,将Scripting Runtime Version脚本运行时版本更改为Stable (.net 4.x)。
接下来是重写manifest.json。
由于在项目的Root文件夹/ Packages中有一个名为manifest.json的文件,因此我们将按照https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/TwoStickShooter/Pure/Packages/manifest.json 与此处相同的方式重写内容。

准备工作完成。

最小的ECS项目
首先,尝试尽可能地构建最有意义的功能。
这次要组织的功能就是这样
· 统计每个帧

1、 没有使用 ECS的代码 :
首先我会试着用MonoBehaviour来组织它。这是一个非常简单的代码。
编写完成后,您可以将Counter组件添加到适当的GameObject中。
using UnityEngine;public class Counter : MonoBehaviour{ public int count;void Update () { count++; }} 

接下来,让我们对应于ECS。有三件事要做
它是什么?麻烦? ECS就是这样

· CountData 计数的值
· CountSystem 实际计数
· ECSMain 实体
ComponentDatas.cs
using Unity.Entities; // 实体public struct CountData : IComponentData{public int count;} 

CountSystem.cs
using Unity.Entities; public class CountSystem : ComponentSystem{// System所需的ComponentData列表struct Group{public int Length;public ComponentDataArray<CountData> countData;} [Inject] Group group; // 注入请求的ComponentData // 调用每一帧protected override void OnUpdate(){for(int i=0; i<group.Length; i++){var countData = group.countData[i];countData.count++;group.countData[i] = countData;}}} 
ECSMain.cs
using UnityEngine;using Unity.Entities; public class ECSMain : MonoBehaviour{void Start (){// 获取EntityManagervar entityManager = World.Active.GetOrCreateManager<EntityManager>(); // 定义实体的原型var sampleArchetype = entityManager.CreateArchetype(typeof(CountData)); // 实际上基于原型生成实体entityManager.CreateEntity(sampleArchetype);}} 
之后,如果您将ECSMain附加到适当的对象并Play,则第一步完成。
在Play期间,打开Window > EntityDebugger,当它从Systems列表中找到CountSystem时,它会变白,并且如果实体存在 。
如果没有实体,那么您有可能在没有CountData的情况下创建实体,或者您没有首先创建实体。另外,如果您没有系统,则创建ComponentSystem的代码有问题。

更多unity2018的功能介绍请到paws3d学习中心查找。

 

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 缓存 IDE
教您怎么系统的认识物理机服务器(做一个软硬件都懂的软件工程师
教您怎么系统的认识物理机服务器(做一个软硬件都懂的软件工程师
59 0
|
3月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统搭建FTP服务器教程】
现在,你已经成功在Ubuntu系统上搭建了FTP服务器。你可以使用FTP客户端连接到你的FTP服务器,并上传、下载文件。注意,为了安全起见,建议配置SSL/TLS加密以保护数据传输。
63 0
|
3月前
|
弹性计算 Linux Shell
阿里云ecs linux系统如何进行系统盘的扩容
【1月更文挑战第25天】【1月更文挑战第122篇】阿里云ecs linux系统如何进行系统盘的扩容
206 1
|
6天前
|
JavaScript 前端开发 UED
Vue工具和生态系统: Vue.js和服务器端渲染(SSR)有关系吗?请解释。
Vue.js是一个渐进式JavaScript框架,常用于开发单页面应用,但其首屏加载较慢影响用户体验和SEO。为解决此问题,Vue.js支持服务器端渲染(SSR),在服务器预生成HTML,加快首屏速度。Vue.js的SSR可手动实现或借助如Nuxt.js的第三方库简化流程。Nuxt.js是基于Vue.js的服务器端渲染框架,整合核心库并提供额外功能,帮助构建高效的应用,改善用户体验。
7 0
|
1月前
|
弹性计算 运维 Kubernetes
云原生K8S场景自动化响应ECS系统事件
客户云原生K8S场景下,通过社区开源NPD+Draino+Autoscaler零开发,对接响应ECS主动运维事件,通过自动响应事件减少非预期宕机。
|
2月前
|
弹性计算 安全 Linux
阿里云ECS Linux系统漏洞修复详细教程
阿里云ECS Linux系统漏洞修复详细教程
|
2月前
|
数据安全/隐私保护
2012及其以上系统修改服务器密码指南
2012及其以上系统修改服务器密码指南
|
3月前
|
存储 JSON 运维
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
49 0
|
3月前
|
弹性计算 Windows
Windows系统的ECS实例如何配置RAID10
Windows系统的ECS实例如何配置RAID10
|
3月前
|
Ubuntu 关系型数据库 MySQL
百度搜索:蓝易云【ubuntu系统服务器安装WordPress教程】
现在,你已经成功在Ubuntu系统服务器上安装了WordPress。可以使用你的域名或服务器IP地址访问WordPress网站,进行网站配置和内容发布。
92 0