Unity DOTS技术(二)ECS

文章目录

  • 一.ECS简介
  • 二.基本操作实例
  • 三.实体查看组件
  • 四.位置实体修改
  • 五.旋转实体
  • 六.了解原有属性
  • 七.禁止自动创建
  • 八.动态实例化


一.ECS简介

ECS全称 (Entity Component System).即(E:实体 C:组件 S:系统).
实际上即是数据方法分离.数据放在组件里,具体实现放在系统里.组件挂载在实体上.
为了让大家快速了解,本次介绍是以下内容:
在这里插入图片描述

下面举个简单的的例子:

二.基本操作实例

1.创建数据组件,继承IConponentData接口
在这里插入图片描述

2.系统组件创建一个系统继承ComponentSystem
在这里插入图片描述

3.创建一个中转组件,这样我们就可以将此脚本挂在物体上(比如一个Cube),
这个脚本生成PrintComponentData1并挂在物体上.
此时该物体刚成为一个实体
在这里插入图片描述

4.运行后实体在编辑器场景列表中的Hierarchy中是看不到的
不过我们可以看到打印.我们需要使用场景查看组件来查看

三.实体查看组件

通过菜单栏Windows > Analysis > Entity Debugger
在这里插入图片描述

在这个列表中可以看到正在运行的物体及系统
在这里插入图片描述

四.位置实体修改

在这里插入图片描述

此设置后,挂载ConterToEnitiy组件的位置将被设置为 1,1,1,相当于Position

五.旋转实体

1.创建该脚本挂载物体上
在这里插入图片描述

2.创建该脚本,即可通过Foreach的方式,找到所有RotationEulerXYZ的脚本进行旋转
在这里插入图片描述
在这里插入图片描述

六.了解原有属性

通过可以查看视图 > 对象浏览器,发现我们的Transform是包含了很多冗余的内容,其实并不一定会用到.
在这里插入图片描述
在这里插入图片描述

七.禁止自动创建

系统在程序中即使不挂载也会自动运行,下面介绍一个系统特性.
使用DisableAutoCreation即可禁止自动运行.
在这里插入图片描述

八.动态实例化

1.创建ECS预制体,挂载以上两个插件
在这里插入图片描述

2.编写代码
在这里插入图片描述

using Unity.Entities;
using UnityEngine;
public class ECSPrefabCreator : MonoBehaviour
{
    public GameObject cube;
    // Start is called before the first frame update
    void Start()
    {
        //对于Cube的设置
        GameObjectConversionSettings tempSettings = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, null);
        Entity tempEntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(cube, tempSettings);
        //获取全局物体管理器
        EntityManager tempEntityManager = World.DefaultGameObjectInjectionWorld.EntityManager;
        //物体实例化
        Entity tempCube = tempEntityManager.Instantiate(tempEntityPrefab);
    }
}

3.挂载脚本
在这里插入图片描述

4.修改位置
在这里插入图片描述

Translation tempTranslation = new Translation();
for (int i = 0; i < sum; i++)
{
	for (int j = 0; j < sum; j++){
		//物体实例化
		Entity tempCube = tempEntityManager.Instantiate(tempEntityPrefab);
		//设置位移
		tempTranslation.Value.x += interval;
		tempEntityManager.SetComponentData(tempCube, tempTranslation);
	}
	//设置位移
	tempTranslation.Value.x = 0;
	//设置位移
	tempTranslation.Value.y += interval;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/673013.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

遥感影像信息提取

刘老师&#xff08;副教授&#xff09;&#xff0c;来自双一流重点高校&#xff0c;长期从事GIS/RS/3S技术及其生态环境领域中的应用等方面的研究和教学工作&#xff0c;并参与GIS的二次开发&#xff0c;发表多篇sci论文&#xff0c;具有资深的技术底蕴和专业背景。 专题一&am…

Java反序列化漏洞与URLDNS利用链分析

前言 前面学习过 Java 反序列化漏洞的部分知识&#xff0c;总结过几篇文章&#xff1a; 文章发布日期内容概括《渗透测试-JBoss 5.x/6.x反序列化漏洞》2020-07-08JBoss 反序列化漏洞 CVE-2017-12149 的简单复现&#xff0c;使用了 ysoserial 和 CC5 链&#xff0c;未分析漏洞…

mipi-csi笔记

数据格式 长包&#xff0c;短包 用DI来判断数据类型 测试帧率&#xff0c;如用1G的示波器 下面的代表这是一张图片,用帧间隙来测试YUV422视频的帧率 fps10hz的外同步

alist配合onlyoffice 实现在线预览

alist配合onlyoffice 实现在线预览 文章目录 alist配合onlyoffice 实现在线预览一、安装onlyoffice二、增加view.html文件三、安装nginx&#xff0c;并增加conf配置文件四、alist预览配置增加 一、安装onlyoffice 我是采用docker安装&#xff0c;采用的版本是7.2&#xff0c; …

eNSP学习——连接RIP与OSPF网络、默认路由

目录 相关主要命令 实验一、连接RIP与OSPF网络 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建RIP和OSPF网络 3、配置双向路由引入 4、手工配置引入时的开销值 实验二、使用OSPF、RIP发布默认路由 原理介绍 实验目的 实验内容 实…

天气数据集-Jena Climate dataset

天气数据集-Jena Climate dataset 1.数据集基本信息 Dataset Name: mpi_saale_2021b.csv Size: 26495 rows; 1 year (2021), 10 min 气象学、农业、环境科学 开源机构: Max Planck Institute for Biogeochemistry 2.数据特征 2.1 特征简介 数据共有31个特征&#xff0c;…

【GeoServer系列】——安装与发布shapefile数据

GeoServer是一个基于java的服务器&#xff0c;它允许用户查看和编辑地理空间数据。使用OGC制定的开放标准&#xff0c;GeoServer在地图创建和数据共享方面具有极大的灵活性。 功能概述&#xff1a; Open and Share Your Spatial Data GeoServer允许您向世界显示您的空间信息。G…

上可生产力,下可打游戏!奥睿科USB4炫影固态硬盘盒是真的稳

上可生产力&#xff0c;下可打游戏&#xff01;奥睿科USB4炫影固态硬盘盒是真的稳 哈喽小伙伴好&#xff0c;我是Stark-C~ 开篇 对于和我一样经常需要和存储数据打交道的人群来说&#xff0c;大容量的移动硬盘可以说是不可或缺的。移动硬盘作为一种便携式的存储设备&#xf…

笔记:美团的测试

0.先启动appium 1.编写代码 如下&#xff1a; from appium import webdriver from appium.webdriver.extensions.android.nativekey import AndroidKeydesired_caps {platformName: Android,platformVersion: 10,deviceName: :VOG_AL10,appPackage: com.sankuai.meituan,ap…

Git操作笔记

学git已经好多次了。但是还是会忘记很多的东西&#xff0c;一些常用的操作命令和遇到的bug以后在这边记录汇总下 一.github图片展示 图片挂载&#xff0c;我是创建了一个库专门存图片&#xff0c;然后在github的md中用专用命令展示图片&#xff0c;这样你的md就不会全是文字那…

Android O Camera深度研究

目录 Adnroid O之前的Android camera软件框架 Adnroid O camera软件框架 Passthrough Mode Binderized mode Wrapper shim for libhardware HALs Wrapper shim for libhardware HALs Customized Treble Camera HAL/framework Camera HAL transition and removal plan …

【限免】杂波环境下线性调频脉冲、巴克码、频率步进脉冲雷达MTI、脉冲压缩【附MATLAB代码】

来源&#xff1a;微信公众号&#xff1a;EW Frontier 本代码主要模拟杂波环境&#xff08;飞机、地杂波、鸟类信号&#xff09;下&#xff0c;Chirp脉冲、巴克码脉冲、频率步进脉冲雷达信号的脉冲压缩及MTI、​匹配滤波。 MATLAB主代码 % 定义参数 fs 1000; % 采样率 T 1; …

MYSQL一、MYSQL的了解

一、MySQL概述 1、数据库相关概念 为了方便&#xff0c;我们一般把mysql数据库管理系统简称位mysql数据库 通过可以操作数据库管理系统&#xff0c;然后再通过数据库管理系统操作&#xff08;数据库&#xff09;和&#xff08;数据库里面的数据&#xff09; 2、当前主流的关系…

Vue3 - Mac系统用文本编辑写html不显示效果的坑

平时在win系统下&#xff0c;可以直接对文本进行编辑&#xff0c;非常的舒服。 在mac系统中&#xff0c;也有类似的功能&#xff0c;就是文本编辑&#xff0c;没想到居然还有坑。 这是我mac系统中创建的html文件&#xff0c;想着没有几行代码&#xff0c;就没有开编辑器了&am…

Java 异常

一、异常的继承体系图 如图 二、Throwable类常用的方法 1.获取异常的信息 public String getMessage() {return detailMessage; } 2.获取异常的原因 // 获取异常的原因 public String getLocalizedMessage() {return getMessage(); } 3.打印异常信息 // 打印异常信息 publi…

NDIS Filter开发-OID 请求

NDIS 定义对象标识符 (OID) 值来标识适配器参数&#xff0c;其中包括操作参数&#xff0c;例如设备特征、可配置的设置和统计信息。 Filter驱动程序可以查询或设置基础驱动程序的操作参数&#xff0c;或过滤/覆盖顶层驱动程序的 OID 请求。 NDIS 还为 NDIS 6.1 及更高版本的Fi…

STM32_SPI

1、SPI简介 1.1 什么是SPI SPI&#xff0c;即Serial Peripheral Interface&#xff0c;串行外设接口。SPI是一种高速的、全双工、同步的串行通信总线&#xff1b;SPI采用主从方式工作&#xff0c;一般有一个主设备和一个或多个从设备&#xff1b;SPI需要至少4根线&#xff0c;…

【操作与配置】VS2017与MFC环境配置

【操作与配置】VS2017与MFC环境配置 概述 Visual Studio 是一款强大且多功能的集成开发环境&#xff08;IDE&#xff09;&#xff0c;适用于软件开发人员和团队。使用此应用程序&#xff0c;您可以构建和调试现代Web应用程序&#xff0c;并利用扩展帮助探索几乎任何编程语言。…

springboot高校网上选课系统-计算机毕业设计源码85583

摘 要 本论文主要论述了如何使用JAVA语言开发一个高校网上选课系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述高校网上选课系统的当前背景以及系统开发的目…

重复文件怎么查找并清理?电脑重复文件清理工具分享:4个

在日常使用电脑的过程中&#xff0c;我们不可避免地会遇到各种重复文件的问题。这些重复文件不仅占据了宝贵的存储空间&#xff0c;还可能导致系统性能下降&#xff0c;甚至引发一些不必要的问题。因此&#xff0c;如何有效地查找并清理这些重复文件成为了许多用户关注的焦点。…