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. 用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
  2. MYSQL delete 从多人表中删除
  3. go语言php编译,Golang模板编译引擎FET
  4. 【Java】为什么java构造函数的构造器只能在第一行写this() 或者super() ?
  5. python计算机代码_python告白代码,只属于程序员的浪漫
  6. Zabbix---3 监控主机内存使用率
  7. 微信支付可以在App Store购买应用了 附绑定教程
  8. chroot环境的快速构建
  9. 在IntelliJ IDEA下编辑jspx文件(转)
  10. Geeks 面试题:Fibonacci numbers 优化为lgn效率
  11. python爬取天天基金历史净值_python爬取天天基金网全部基金的历史全部净值
  12. 世界著名半导体公司及其官网
  13. nvidia控制面板点了没反应win7_nvidia控制面板点击没反应 - 卡饭网
  14. 椭圆周长c语言,怎么计算上椭圆周长,下椭圆周长,和展开面周长
  15. 如何查看linux的系统配置,多少个核心,多少个线程?CPU的主频 查看内存
  16. AcWing 95. 费解的开关(推理)
  17. 回到那个夏天(千与千寻)
  18. 闲扯Maven项目代码组织形式
  19. 零基础转行,你要不要去编程培训班?
  20. 前后端传输加密代码-java

热门文章

  1. 疫情降低财务和社交幸福感;洲际酒店集团发起全球清洁安全承诺 | 美通企业日报...
  2. stable diffusion 入门 视频和教程
  3. Google 程序员都是怎么研究 AI 的?
  4. 深入设计模式06---建造者模式
  5. 公网ip与私网ip区别联系
  6. 拯救者Y7000系列 笔记本键盘点击 只响但是没有反应的问题
  7. 写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
  8. 超详细【百分百拿offer】的面试教程,集合5000多家软件测试公司面试题。
  9. iOS - 设备扬声器听筒切换,静音模式播放音频
  10. 【职业发展类】程序员职业生涯的四重境界,你处于哪一重?