Unity DOTS 一文开启ECS大门

  • 前言
  • 环境
  • 过程
    • 新建URP项目
    • 导入Entity等插件包
    • 开启Entity Debugger窗口
    • 编写第一个Entity脚本
    • 为Entity添加Component
    • 创建一个System
  • 参考
  • 前言

    Unity DOTS 已经迎来1.0版本更新,但是目前开发DOTS还得用Entity 0.51.0版本比较合适,资料相对较多,Bug相对较少。下文就从最基本的开始,创建一个Entity+Component+System。

    环境

  • 软件 版本
    Unity 2021.3.8f1
    Visual Studio 2019
    软件包 版本
    URP 12.1.7
    Entity 0.51.1-preview.21
    Rendering.Hybrid 0.51.1-preview.21
    physics 0.51.1-preview.21

    过程

    新建URP项目

导入Entity等插件包

项目创建完成后,在任务管理器中打开工程目录,找到Packages文件夹,打开文件夹,找到manifest.json文件,然后添加:

 "com.unity.entities": "0.51.1","com.unity.physics": "0.51.1","com.unity.rendering.hybrid": "0.51.1",

保存后回到Unity,打开PackageManager

点击Advanced Project Settings

更改
Enable Pre-release Packages
Show Despendencies
两项的设置

关闭设置

升级包

确保三个包都升级完毕,关闭PackageManager窗口

开启Entity Debugger窗口

开启Entity Debugger窗口便于查看。

编写第一个Entity脚本

创建脚本Spawer并挂载

在脚本中编写以下代码 :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
using Unity.Transforms;
using Unity.Rendering;
using Unity.Mathematics;public class Spawer : MonoBehaviour
{void Start(){MakeEntities();}private void MakeEntities(){//拿到默认世界中的实体管理器EntityManager entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;//创建一个实体Entity myEntity = entityManager.CreateEntity();}
}

保存并回到Unity,点击运行

可以在Debugger窗口中看到我们刚创建的Entity
其中
Entity 0 为 PhysicsSystem
WorldTime 为 游戏时间
GameObject Scene 为 游戏场景

为Entity添加Component

创建脚本LevelComponent并添加以下代码
Tip:不需要拖拽到场景物体上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
public struct LevelComponent : IComponentData
{public float level;
}

修改Spawer脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
using Unity.Transforms;
using Unity.Rendering;
using Unity.Mathematics;public class Spawer : MonoBehaviour
{void Start(){MakeEntities();}private void MakeEntities(){//拿到默认世界中的实体管理器EntityManager entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;//创建一个原型 用来给实体分配数据EntityArchetype archetype = entityManager.CreateArchetype(//移动typeof(Translation),//旋转typeof(Rotation),//关卡组件typeof(LevelComponent));//根据原型创建一个实体Entity myEntity = entityManager.CreateEntity(archetype);}
}

运行场景

可以看到我们创建的Entity已经挂载了LevelComponent

创建一个System

创建一个System来控制LevelComponent中的值
创建LevelSystem脚本,并添加以下内容

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
public class LevelSystem : ComponentSystem
{protected override void OnUpdate(){Entities.ForEach((ref LevelComponent levelComponent) => {levelComponent.level += 1f * Time.DeltaTime;});}
}

保存并运行场景

可以看到Level的值在不断变化

至此Entity Component System系统全部正常运行。

参考

  1. https://docs.unity3d.com/Packages/com.unity.entities@0.51/manual/index.html

  2. https://docs.unity3d.com/Packages/com.unity.rendering.hybrid@0.51/manual/requirements-and-compatibility.html

Unity DOTS【000】 入门介绍:环境配置相关推荐

  1. WinPcap网络编程入门——0. 环境配置及系列介绍

    WinPcap网络编程入门--0. 环境配置及系列介绍 系列教程章节直达: Winpcap网络编程入门--1. 获取设备列表: 说明:本教程适用于网络编程开发人员入门,将从底层分析 WinPcap 的 ...

  2. 【Jetson Nano 入门】环境配置汇总

    文章目录 前言 一.镜像烧写 二.PWM风扇自动调速 三.使用MicroUSB在电脑打开终端 四.VNC实现局域网及网线直连通信 五.SSH文件传输 六.状态监控软件Jtop 七.检查CUDA.Ope ...

  3. 云计算入门教程环境配置

    ###########严重声明################# 本人支持一切正规软件开发行为,接受知识付费理念. 并坚决抵制盗版行为,用于学习交流的非盈利目的的,且法律允许且支持的条件下,可以进行相 ...

  4. 【PIE-Earth】入门介绍和配置开发环境

    文章目录 0.前言 1. PIE-Earth总体介绍 1.1 基于多源异构时空数据 1.2 空间分析 1.3 定制开发 2. 功能介绍 2.1 二三维可视化 2.2 空间分析 2.3 定制开发 3. ...

  5. 【Unity + Google Cardboard】 VR环境配置

    翻译一下google cardboard接unity的开发文档 前面 一直想尝试开发一个VR游戏试试-- Unity的官方文档在这里 一开始看的时候分不清各种VR设备,如果你也是的话--比如只有一个能 ...

  6. webpack入门+react环境配置

    小结放在前:这篇文章主要是为下一篇的react提前铺好路,webpack是一个前端资源模块化管理和打包工具,说白了就是方便我们管理自己的常用的一些代码,比如你开发中用到sass以及jade同时用到es ...

  7. webpack入门+react环境配置 1

    小结放在前:这篇文章主要是为下一篇的react提前铺好路,webpack是一个前端资源模块化管理和打包工具,说白了就是方便我们管理自己的常用的一些代码,比如你开发中用到sass以及jade同时用到es ...

  8. Unity 2021.1.15 ARCore环境配置与样例开发

    前言 首先这个文档是基于Unity2018及以上的,由于实习需要做AR相关的内容,但是AR Core之前的教程大多是基于SDK的,而这一功能已不在Unity更高版本中支持,同时楼主又是个Unity小白 ...

  9. 机器学习入门编程环境配置

    1. 安装 Python3(可以直接安装anaconda而不用再去安装python和单独进行环境变量配置,并且在所有的新电脑上想要安装python,最好也是选择直接安装anaconda,不然后面用到其 ...

  10. day68_淘淘商城项目_01_电商介绍 + 互联网术语 + SOA + 分布式 + 集群介绍 + 环境配置 + 框架搭建_匠心笔记

    淘淘商城项目_01 1.电商行业的背景介绍--电子商务 1.1.11.11 1.2.电商行业技术特点 2.淘淘商城的系统架构 2.1.淘淘商城介绍 2.2.功能介绍 2.3.系统架构 2.3.1.传统 ...

最新文章

  1. Linux下task_struct详解
  2. 浏览器获取浏览历史_浏览器历史的未来
  3. 你想要的自动驾驶汽车,为何迟迟不能出现?
  4. ssh: connect to host localhost port 22: Connection refused 问题
  5. Go 语言学习笔记(二):函数
  6. awr报告分析 mysql_4个MySQL优化工具,帮你准确定位数据库瓶颈!
  7. npm eject 暴露webpack报错,less或sass添加报错
  8. 禁止微信浏览器的下拉滑动
  9. JS实现继承的几种方式
  10. java随机生成名字_java随机生成一个名字和对应拼音的方法
  11. 非洲正在打造一个完全不同的人工智能产业
  12. 联想G40-30进入PE鼠标键盘失灵解决方法
  13. 安装 Windows 7 VM虚拟机
  14. 唐伯虎的诗,可能是改编的
  15. mmd动作:FREELY_TOMORROW
  16. python的third party llibs
  17. sql语句order by与group by
  18. 矩阵分析——Jordan标准形
  19. ping包 命令格式 用法集
  20. U盘安装winxp、win7系统最详攻略

热门文章

  1. python soap服务_python之SOAP服务—ZIPCodeWorldUSWebService
  2. 盈建科IPO注册获准:研发投入占比低,曾遭前东家索赔数千万
  3. ARM 编程:C语言与汇编间互相调用,参数与返回值的传递方式详解
  4. 第五章-离散时间LTI系统
  5. 【弄nèng - Activiti6】Activiti6入门篇(十四)—— 补偿边界事件
  6. 妙招 I 只会Java,老板再也不担心我不懂区块链开发了!
  7. YOLOv7 训练报错:subprocess.CalledProcessError: Command ‘git tag‘ returned non-zero exit status 127
  8. latex论文排版个人向相关问题记录
  9. 夏日葵电商:阅读付费、知识付费系统诞生的“知识明星”
  10. python项目--物流行业项目分析