ECS 简略版说明五:Baking and entity scenes

news2024/12/23 5:54:03

目录

 

Baking and entity scenes

Creating and editing sub scenes

Accessing data in a baker

Loading and unloading entity scenes


Baking and entity scenes

Baking 是一个把 sub scenes 转变成 entity scenes 的过程,使用 bakers和 baking systems:

  • sub scene is a Unity scene asset that's embedded in another scene by the SubScene MonoBehaviour.
  • An entity scene is a serialized set of entities and components that can be loaded at runtime.
  • baker is a class extending Baker<T>, where T is a MonoBehaviour. A MonoBehaviour with a Baker is called an authoring component.
  • baking system is a normal system marked with the [WorldSystemFilter(WorldSystemFilterFlags.BakingSystem)] attribute. (Baking systems are fully optional and generally only required for advanced use cases.)

Baking a sub scene is done in a few main steps:

  1. Sub scene的每一个GameObject,创建对应的实体
  2. The baker of each authoring component in the sub scene is executed. Each baker can read the authoring component and add components to the corresponding entity.
  3. 执行baking systems. Each system can read and modify the baked entities in any way: set components, add components, remove components, create additional entities, or destroy entities. 

 当sub-scene更改时,就会重新baked:

  1. 只有 读取更改的 authoring components 的bakers,才会re-executed.
  2. baking systems 会 re-executed 
  3. The live entities in Edit mode or Play mode are updated to match the results of baking. (This is possible because baking tracks the correspondence of baked entities to live entities.)

Creating and editing sub scenes

勾选框表示是否可以编辑,勾选上打开该场景时,就会加载对应的资源,如果不在该场景后,可以取消勾选,降低消耗

Accessing data in a baker

baker的 authoring component可以自动获取,但是其它的数据,需要添加到dependencies 中才可以访问:

Baker methodDescription
GetComponent<T>()Accesses any component of any GameObject in the Sub Scene.
DependsOn()Tracks an asset for this Baker.
GetEntity()Returns the id of an entity baked in the sub scene or baked from a prefab. (The entity will not yet have been fully baked, so you should not attempt to read or modify the components of the entity.)

Loading and unloading entity scenes

为了流加载,场景被分为多个sections ,通过index 识别. 每一个section属于哪一个 entity 根据 SceneSection shared component 组件决定, By default, an entity belongs to section 0, but this can be changed by setting SceneSection during baking.

⚠ IMPORTANT
在bake过程中,子场景中的实体只能引用同一section或section 0的其他实体( section 0 总是在其他section之前加载 and 只有当场景本身被卸载时才会被卸载).

当一个场景被加载时,它由一个metadata的实体来表示,它的每个部分也都由一个实体来表示. 单个section通过操作 entity's RequestSceneLoaded component 来实现load、unload, 当该组件发生变化时,SceneSectionStreamingSystem in the SceneSystemGroup 会收到回调。

The SceneSystem 提供了 loading and unloading entity scenes 的静态方法,不是section scene哦:

SceneSystem methodDescription
LoadSceneAsync()Initiates loading of a scene. Returns an entity that represents the loaded scene.
LoadPrefabAsync()Initiates loading of a prefab. Returns an entity that references the loaded prefab.
UnloadScene()Destroys all entities of a loaded scene.
IsSceneLoaded()Returns true if a scene is loaded.
IsSectionLoaded()Returns true if a section is loaded.
GetSceneGUID()Returns the GUID representing a scene asset (specified by its file path).
GetScenePath()Returns the path of a scene asset (specified by its GUID).
GetSceneEntity()Returns the entity representing a scene (specified by its GUID).
⚠ IMPORTANT
Entity scene and section加载总是 asynchronous,并且不能保证在请求之后需要多长时间才能加载数据.在大多数情况下,代码应该检查从场景加载的特定数据是否存在,而不是检查场景本身的加载状态 这种方法避免了将代码绑定到特定场景。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据中心供配电监控系统解决方案介绍 安科瑞 许敏

摘 要&#xff1a;供配电系统始终是数据中心比较重要的内容&#xff0c;在供配电系统能够得到平稳安全的运行的时候&#xff0c;才能够促使数据中心的相关设备具有比较可靠的动力源泉。在新型数据中心不断发展的过程中&#xff0c;其功率密度也相对比较大&#xff0c;对供电的要…

销售人员如何通过CRM系统提升业绩

面对日趋激烈的竞争&#xff0c;销售人员的压力也日益剧增。尤其伴随流量红利的消失&#xff0c;越来越多的企业开始借助数字化工具赋能销售人员&#xff0c;希望通过工具的加持&#xff0c;实现销售人才和销售工具的“人器合一”&#xff0c;最终助力企业业绩的增长。 在市场有…

专访虎牙直播毛茂德 | 看互联网老兵如何用技术驱动效能提升?

引言 作为一位经历了互联网、移动互联网阶段的老兵&#xff0c;毛茂德老师一路走来&#xff0c;始终保持自己的技术初心&#xff0c;不断探索未知领域的宽度&#xff0c;进入虎牙直播后&#xff0c;他积极推动虎牙拥抱云原生&#xff0c;进行业务创新&#xff0c;同时他也发挥技…

1. MongoDB快速实战与基本原理

分布式缓存技术Redis 1. MongoDB介绍1.1 什么是MongoDB1.2 MongoDB vs 关系型数据库1.3 MongoDB的技术优势1.4 MongoDB的应用场景 2. 2.MongoDB快速开始2.1 linux安装MorgoDB 本文是按照自己的理解进行笔记总结&#xff0c;如有不正确的地方&#xff0c;还望大佬多多指点纠正&a…

基于SpringBoot+mybatis+layui就业管理系统设计和实现

基于SpringBootmybatislayui就业管理系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文…

【STL】容器适配器

放在专栏【C知识总结】&#xff0c;会持续更新&#xff0c;期待支持 1、什么是适配器&#xff1f; 我们生活中就存在大量的适配器&#xff0c;最常见的莫过于我们常见的电源适配器&#xff0c;它的作用就是将交流电源转化为直流电源进行输出&#xff0c;可以说电源适配器在电流…

618复盘:爆款存当下,蓝海寄未来

价格&#xff0c;贵必赔。优惠&#xff0c;直接减。 号称史上最内卷的一届618在一家又一家号称史上最大补贴的狂欢下&#xff0c;落幕得悄无声息&#xff0c;各大平台默契地都没有公布具体GMV。 这样的结局似乎已有预见。此前有媒体援引浙江大学经济学院教授叶建亮的说法&…

从小白到大神之路之学习运维第47天---第三阶段----Iptables、路由表的配置、Linux下创建虚拟IP

第三阶段基础 时 间&#xff1a;2023年6月26日 参加人&#xff1a;全班人员 内 容&#xff1a; Iptables、路由表的配置、Linux下创建虚拟IP 目录 Iptables 1. 查看 iptables 设置&#xff1a; 2. 开启全部流量&#xff1a; 3. 关闭全部流量&#xff1a; 4. 允许某…

【Jmeter教程】_事务控制器

目录 一、添加事务控制器 二、事务控制器参数说明 三、运用事务控制器 统计性能测试结果一定会关注TPS&#xff0c;TPS表示每秒处理事务数&#xff0c;JMeter默认每个事务对应一个请求。我们可以用逻辑控制器中的事务控制器将多个请求统计为一个事务。 一、添加事务控制器 …

分享 5 个你可能不知道的前端小技巧

大家都知道&#xff0c;如今前端开发是一个充满活力的领域&#xff0c;每天都会涌现出新的技术和最佳实践。 作为前端开发人员&#xff0c;如果你真的想创建引人入胜、直观且响应迅速的用户界面&#xff0c;就必须时刻跟进最新的趋势和技术。 作为前端开发人员&#xff0c;我们…

不止10倍提速!PCIe EtherCAT实时运动控制卡XPCIE1032H 等您评测!

在高速高精运动控制领域&#xff0c;数据交互的快慢对产线的生产效率起着重要作用。提升数据交互速度能够实时地接收和处理大量的传感器监控运行数据、运动指令和反馈信息&#xff0c;从而实现更精确的运动控制、速度调整和轨迹规划&#xff0c;进而提高系统的响应时间和稳定性…

LDR6023C 专门为USB-C接口无线领夹式麦克风方案打造

推出领夹式无线麦克风方案&#xff0c;专门为USB-C接口手机打造&#xff0c;兼容性非常的游戏&#xff0c;可让手机同时一边充电一边传输数据。 随着直播平台的兴起&#xff0c;网络直播越来越火&#xff0c; 领夹式直播麦克风得到广泛应用&#xff0c; 现在手机&#xff0c;电…

海睿思分享 | 浅谈企业数据质量问题

一、数据质量问题场景 在日常工作中&#xff0c;业务领导经常通过BI系统来了解各项业务的业绩情况。倘若某天&#xff0c;他打开某张核心报表&#xff0c;发现当日某个区域的数据一直是空白的。BI开发人员经过几个小时的排查分析&#xff0c;发现是当日该区域的销售数据存在产…

VsCode 安装Copilot

1&#xff0c;插件安装 &#xff08;1&#xff09;首先我们在 VSCode 里面搜索并安装 Copilot 插件&#xff1a; &#xff08;2&#xff09;安装后编辑器右下角会出现一个小机器人图标&#xff0c;并且提示我们需要登录 GitHub 账号&#xff1a; 此时需要科学 目前要收费劝退…

增值税高如何解决?有哪些注意事项?

增值税高如何解决&#xff1f;有哪些注意事项&#xff1f; 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 咦&#xff0c;增值税高了怎么办&#xff1f;这可是个大问题啊&#xff01;特别是对于那些经济效益还不错的企业来说&#x…

【Leetcode60天带刷】day37——968. 监控二叉树

​ 题目&#xff1a; 968. 监控二叉树 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1&#xff1a; 输入&#xff1a;[0,0,null,0,0] 输出&#…

校园外卖行业内卷之下,高校外卖创业者如何成为卷王?

伴随着外卖行业的不断发展&#xff0c;校园市场前景广阔。校园外卖市场因各大平台的竞争而变得越来越复杂。各种技术支持和经验参考让大学生创业校园外卖越来越困难&#xff0c;市场竞争也越来越激烈。 校园外卖市场究竟有多内卷&#xff1f; 外卖龙头企业。 校园市场广阔的发…

抖音seo矩阵系统:源码编写及优化策略

开发概述 抖音作为一款流行的短视频分享平台&#xff0c;其搜索引擎优化&#xff08;SEO&#xff09;的重要性日益凸显。为了提升抖音账号的曝光率和用户粘性&#xff0c;开发一套抖音SEO矩阵系统源码成为了必不可少的一步。 在编写抖音SEO矩阵系统源码时&#xff0c;需要首先…

企业缺成本票怎么办?

企业缺成本票怎么办&#xff1f; 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 企业缺成本发票的原因基本都是一样的&#xff0c;不外乎以下这几种&#xff1a; 1&#xff0e;企业类型自身缺陷&#xff1a;成本费用以人员工资、提…

父元素设置max-height,子元素高度设置百分比,子元素继承父元素高度失败

需求描述&#xff1a; 小程序里碰到的&#xff0c;最外层page高度 100%&#xff0c;里边第一层盒子高度为 max-height: 60%; 第一层盒子里有 title&#xff0c;content&#xff0c;这个 content 高度要随着第一层盒子高度走&#xff0c;最高为第一层盒子的高度减去 title 的高…