Unity DOTS 入门(2) SubScene和Bake

SubScene

  • 由于Unity原本的Scene无法使用ECS,所以需要SubScene来存放ECS模式下的内容
  • 可以正常的像普通的开发模式一样,在SubScene里面来添加GameObject, MonoBehaviour
  • 然后Unity将这个SubScene里面的物体,全部baking(烘培)出来,转成ECS模式
  • 可以自定义Baker,去加一个ECS的Component到这个Entity上;

创建SubScene

  • 可以通过在Hierarchy上右键添加
  • 也可以通过给一个gameobject添加SubScene组件(同时需要创建一个Scene Asset)

两种模式open/close

  • 操作方式:

在这里插入图片描述
在这里插入图片描述

  • open 模式下,显示Gameobjects
  • close 模式下,显示Entities
  • 模式切换时就直接对GameObject进行bake操作了,不是运行时。

Component 概述

  1. Component是存放我们Entity数据的载体;
  2. Component里面的这个数据是给Sytem的算法来进行读写的;
  3. 定义一个ComponentData/Component 需要继承lComponentData接口,这个接口作用只是标记为ECS的Component类型;
  4. 里面的数据类型需要为非托管数据类型(int, NativeArray等)
  5. 如果想要一个可以托管的ComponentData,那么直接定义为Class就可以了

Bake 代码流程

SubScene 会更具Unity原生提供的Components(比如Mesh、Collider等)自动bake成Entity所使用的ComponentData. 但对于我们自定义的Component就需要写bake代码来实现这一转换,Unity将这种操作称之为Authoring

代码实例:

// IComponentData是一个空接口,只是用来标记这个类是一个ComponentData
// 这是unmanaged 类型,不会被GC管理, 内部只能使用unmanaged的数据类型
struct ComponentData : IComponentData
{
    public float rotSpeed;
}

public class ComponentAuthoring : MonoBehaviour
{
    float rotateSpeed = 90f;
    // 自定义一个Baker,方便我们场景在Bake的时候,来转这个组件数据
    private class ComponentBaker : Baker<ComponentAuthoring>
    {
        // subscene bake时调用的方法 编译时就调用
        public override void Bake(ComponentAuthoring authoring)
        {
            // 获取到对应的Entity
            var entity = GetEntity(TransformUsageFlags.Dynamic);
            // 这里只是数据传递,并不是Entity中通过Archetype分配出来的内存
            var data = new ComponentData()
            {
                // authoring是我们在场景中设置的值
                // ECS 中使用的数学库是Unity.Mathematics!
                rotSpeed = math.radians(authoring.rotateSpeed)
            };
            // 将数据添加到Entity中
            AddComponent(entity, data);
        }
    }
}

在Entities Hierarchy里查看

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

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

相关文章

Windows服务器任务计划启动 Java 应用遇到的error:解决错误ERROR0x2331

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

vs2022启动cmake项目(qt+c++)

1.本工程&#xff0c;如图&#xff0c;1个cmakelist.txt3个文件 2.启动vs 3.选择文件夹 4.进入这个页面&#xff0c;就说明配置没问题 5.启动 6.最后会自己生成其他文件

crc编码流水传输

目标 首先我们要确定目标就是输入两位错的时候我们需要重新传输 这其中还分了地址回位&#xff0c;不显示输出&#xff0c;各位清零操作 我们再去看一下这个的详细封转 这么做是有问题的&#xff0c;没有将之前的数据清零 我们做完清零操作以后我们提交一下 发现只需要一…

从零开始学Spring Boot系列-SpringApplication

SpringApplication类提供了一种从main()方法启动Spring应用的便捷方式。在很多情况下&#xff0c; 你只需委托给 SpringApplication.run这个静态方法 &#xff1a; SpringBootApplicationpublic class SpringbootLearningApplication {public static void main(String[] args) …

透视 Insilico 英矽智能:AI 制药明星企业的飞跃、困境与破局

衰老&#xff0c;从古至今困扰了无数仁人志士。无论是千古一帝秦始皇&#xff0c;还是雄才大略汉武帝&#xff0c;亦或者挥斥方遒唐太宗&#xff0c;这些伟大的帝王无一例外的都留下了许多追求长生的故事。当时光的指针落在了 21 世纪的第二个十年&#xff0c;随着全球老龄化问…

中老年人高血糖预防需知:少碰两黄一白,四指标严格控制!

对于血糖不好的人来说&#xff0c;尤其是中老年人&#xff0c;饮食上的调整非常重要。 “少碰两黄一白”是一个很好的饮食原则&#xff0c;可以帮助稳定血糖&#xff0c;预防糖尿病及其并发症的发生。 “两黄”指的是油炸食物和含糖量高的食物&#xff0c;长期摄入会导致身体肥…

css实现扫码循环扫描特效

摘要&#xff1a; 需求中需要模拟扫描的效果来实现户型的生成&#xff01;由于接口ai生成的图片户型时间比较长&#xff0c;所以需要模拟特效&#xff01; <!DOCTYPE html> <html><head><mate charset"UTF-8" /><title>扫描</title…

第二证券|这些翻倍牛股,他们赚到了!

龙年开市以来&#xff0c;有色、化工等周期板块以及AI、轿车等板块表现亮眼&#xff0c;成为商场主线&#xff0c;也涌现出多只大牛股。 数据显现&#xff0c;2月19日以来&#xff0c;到4月10日收盘&#xff0c;A股商场共涌现出33只翻倍股&#xff0c;234只个股涨幅超50%。易方…

美国G口服务器租用的应用领域

在当今数字化快速发展的时代&#xff0c;服务器成为了各行各业不可或缺的重要工具。其中&#xff0c;美国G口服务器以其高带宽、高性能的特点&#xff0c;在众多领域得到了广泛的应用。那么&#xff0c;美国G口服务器租用的应用领域究竟有哪些呢?接下来&#xff0c;本文将为您…

Python快速获取编程问题答案的方法库之howdoi使用详解

概要 howdoi是一个命令行工具,它提供了一种快速获取编程问题答案的方法,通过搜索和抓取Stack Overflow等网站的内容,直接在终端中显示编程问题的解决方案。 安装 通过pip可以轻松安装howdoi: pip install howdoi特性 快速访问编程解决方案:无需手动浏览Stack Overflow。…

大象机器人发布智能遥操作机械臂组合myArm MC,加速具身智能研究与发展!

在全球工业自动化和智能化加速发展的今天&#xff0c;机器人行业正经历着翻天覆地的变化。具身智能研究&#xff0c;作为人工智能领域的关键分支&#xff0c;正努力在精准动作控制、高层次自主决策能力以及自然人机交互体验上赋予机器人新的能力。 在此背景下&#xff0c;大象机…

用uniapp写调色板组件

用uniapp写调色板组件 废话不多说&#xff0c;最近业务原因&#xff0c;需要用uniapp写一个调色板&#xff0c;记录一下 先上效果展示&#xff1a; 最下边的结果色可以实时跟踪&#xff0c;颜色值也可以实时变化&#xff0c;有个小缺陷就是&#xff0c;数值变化跟不上结果值…

【springCloud】版本学习

Spring Cloud介绍 官网地址&#xff1a;https://spring.io/projects/spring-cloud Spring Cloud 是一个基于 Spring Boot 的微服务架构解决方案&#xff0c;它提供了一系列工具和模式来帮助开发者构建分布式系统。Spring Cloud 的组件和模式包括配置管理、服务发现、断路器、…

AJAX 入门到实战 第1天 2024 笔记

1.1-AJAX入门与axios使用 1.2-认识URL 1.3-查询参数 1.4-案例_地区查询 <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>/*获取地区列表: http://hmajax.itheima.net/api/area查询参数:pname: 省份或直辖市…

2024年蓝牙耳机怎么选?五大必看热门蓝牙耳机推荐篇!

​面对市场上琳琅满目的蓝牙耳机&#xff0c;许多消费者感到难以抉择。作为一个耳机爱好者&#xff0c;我根据自己的使用经验&#xff0c;精心挑选了一些我认为值得推荐的蓝牙耳机&#xff0c;希望能为你的选购提供帮助。 一、如何挑选蓝牙耳机&#xff1f;&#xff08;码住重点…

Python爬取淘宝商品评价信息API接口测试实例

item_review-获得淘宝商品评论 公共参数 请求地址: taobao/item_review 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,it…

酷我音乐手机版高级版,听歌必备,资源丰富,全部免费!

hi&#xff0c;大家好我是技术苟&#xff0c;每周准时上线为你带来实用黑科技&#xff01;由于公众号改版&#xff0c;现在的公众号消息已经不再按照时间顺序排送了。因此小伙伴们就很容易错过精彩内容。喜欢黑科技的小伙伴&#xff0c;可以将黑科技百科公众号设为标星&#xf…

Mybatis分页查询用PageHelper插件

首先看接口文档需求 看响应数据样例&#xff0c;那么咱们先自定义一个bean来满足这个需求&#xff0c;这里定义PageBean实体类 package com.itheima.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.List;//分…

并发编程——7.Java的“锁”事

如题目所示&#xff0c;这篇文章我们着重讲解Java里面的各种锁以及与Java锁有关的内容。争取一篇文章让你吃透Java的锁。 目录 1.前言 2.乐观锁和悲观锁 2.1悲观锁 2.2乐观锁 2.2.1乐观锁的介绍 2.2.2CAS算法 3.自旋锁与互斥锁 4.wait/sleep区别 5.生产者与消费者模式…

数据结构与算法之桶排序,Python开发教程入门

&#xff08;一&#xff09;数据结构与算法之数组 &#xff08;二&#xff09;数组结构与算法之栈 &#xff08;三&#xff09;数据结构与算法之队列 &#xff08;四&#xff09;数据结构与算法之链表 &#xff08;五&#xff09;数据结构与算法之树结构基础 &#xff08;…