关于Unity 2018的实体组件系统(通用名称ECS)
将介绍如何在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学习中心查找。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
连接mysql报错Table ‘performance_schema.session_variables’
常规的方法是运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist解决的方法是:第一步:在管理员命令中输入: mysql_upgrade -u root -p --force 第二步:重新启动mysql的服务: net stop mysqlnet start mysql 但是运行在docker容器里的mysql就需要额外的操作了运行以下指令为mysql启动一个为终端 docker exec -it c157bb2cad61 bash 其中c157bb2cad61是CONTAINER ID然后在为终端中执行上述指令
- 下一篇
Kubernetes 实战教学,手把手教您在 K8s 集群上部署 Istio Mesh(一)
出品丨Docker公司(ID:docker-cn)编译丨小东每周一、三、五,与您不见不散! 在之前的两篇 Kubernetes 实战教学文章《Kubernetes 实战教学,手把手教您设置拥有5个节点的 K8S 群集》、《Kubernetes 实战教学,手把手教您运行第一个 Nginx 集群》中,我展示了如何构建5个节点的 Kubernetes 集群以及如何在这个集群环境中构建第一个 Nginx 应用程序。在本文中,我将展示如何在 Play with Kubernetes 平台上构建 Istio 应用程序。 Istio 是一个完全的开源服务网格,它可以对现有的分布式应用程序进行清晰的分层处理。近期,Istio v1.0版本已经正式上线。Istio 完全由 Go 语言编写,它是一个相当成熟的平台,可以提供 API 将其集成到任何日志记录平台策略系统中。这个项目对系统的开销非常小。您可以浏览 https://github.com/istio/ 从 GitHub 处获取 Istio。Istio的多样化功能集使您能够成功、高效地运行分布式微服务架构,并提供一种统一的方式来保护、连接和监视微服务...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS关闭SELinux安全模块
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装