96SEO 2026-02-19 21:02 0
对啦#xff01;这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础…最近DOTS发布了正式的版本,

我们来分享一下DOTS里面Baking核心机制方便大家上手学习掌握Unity
DOTS开发。
今天给大家分享的Baking机制中的Filter
对啦这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白也有一些正在从事游戏开发的技术大佬欢迎你来交流学习。
在默认情况下,Baking会为每个GameObject生成的Entity与Component,
World里面。
然后在创作的时候不是所有的GameObject都需要被转换成Entity。
例如:
在一个样条曲线上一个控制点在创作的时候被用到了但是bake成ecs数据后可能就再也没有用了所以不需要把这个控制点Bake成entity。
Bake产生的Entity输出到World并保存到entity
scene里面,我们可以给这个Entity添加一个BakingOnlyEntity
component后Baking系统就不会把你这个entity存储到entity
World里面。
我们可以直接在Baker函数里面添给entity
添加一个BakingOnlyEntity的组件数据,也可以在Authoring
BakingOnlyEntityAuthoring的组件,这两种方式都可以达到同样的效果没有区别。
你也可以给组件添加注解[BakingType],[TemporaryBakingType]
attributes过滤掉掉组件component,让它不输出到entity中。
[TemporaryBakingType]:被这个attributes注记的Component会在Baking
Output的时候不会输出到entity。
这个Component只会存活在Baker过程中,Baker结束以后就会销毁。
System里面批量处理一些组件数据处理完后这些组件就没有用了。
例如,baker
System批量处理所有的entity,来计算entity的凸包。
计算完成后原来的bounding
scene以后我们就可以像使用普通的Prefab创建GameObject一样来创建entity到世界。
但是使用enity
Scene中的时候Baking把它当作普通的GameObject来进行转换不会把它当作预制体。
prefab你需要注册一个Baker,在Bake函数里面添加一个依赖关系让这个依赖于Authoring
Prefab。
然后Prefab将会被bake出来。
我们搞一个组件保存了entity
TransformUsageFlags.Dynamic);//
GetEntity(TransformUsageFlags.Dynamic);AddComponent(entity,
可以使用EntityPrefabReference。
这个会把它序列化到entity
scene文件里面去。
运行的时候直接load进来就可以使用了。
这样可以防止多个subscene不用重复拷贝生成同一个Prefab。
InstantiatePrefabReferenceSystem
SystemAPI.QueryBuilder().WithAllEntityPrefabComponent().WithNonePrefabLoadResult().Build();state.EntityManager.AddComponentRequestEntityPrefabLoaded(query);}public
EntityCommandBuffer(Allocator.Temp);//
inSystemAPI.QueryRefROPrefabLoadResult().WithEntityAccess()){var
ecb.Instantiate(prefab.ValueRO.PrefabRoot);//
respectivelyecb.RemoveComponentRequestEntityPrefabLoaded(entity);ecb.RemoveComponentPrefabLoadResult(entity);}ecb.Playback(state.EntityManager);ecb.Dispose();}}#endregion
InstantiateEmbeddedPrefabspublic
EntityCommandBuffer(Allocator.Temp);//
inSystemAPI.QueryRefROEntityPrefabComponent()){//
ecb.Instantiate(prefab.ValueRO.Value);//
ECB.Playbackecb.AddComponentComponentA(instance);}ecb.Playback(state.EntityManager);ecb.Dispose();}}#endregion
实例化EntityPrefabReference,可以使用如下代码:#region
InstantiatePrefabReferenceSystem
SystemAPI.QueryBuilder().WithAllEntityPrefabComponent().WithNonePrefabLoadResult().Build();state.EntityManager.AddComponentRequestEntityPrefabLoaded(query);}public
EntityCommandBuffer(Allocator.Temp);//
inSystemAPI.QueryRefROPrefabLoadResult().WithEntityAccess()){var
ecb.Instantiate(prefab.ValueRO.PrefabRoot);//
respectivelyecb.RemoveComponentRequestEntityPrefabLoaded(entity);ecb.RemoveComponentPrefabLoadResult(entity);}ecb.Playback(state.EntityManager);ecb.Dispose();}}#endregion
在实例化EntityPrefabReference之前Unity必须要先加载对应的entity
prefab,然后才能使用它添加RequestEntityPrefabLoaded组件能确保entity
prefab被加载。
Unity会PrefabLoadResult加载到带有RequestEntityPrefabLoaded同一个entity上。
预制体也是entity,也可以被查询到如果需要把一个预制体被查询到,可以在查询条件上添加IncludePrefab。
SystemAPI.QueryBuilder().WithAllBakedEntity().WithOptions(EntityQueryOptions.IncludePrefab).Build();
buffer也可以销毁一个预制体节点,代码如下:#region
EntityCommandBuffer(Allocator.Temp);foreach
inSystemAPI.QueryRefRORotationSpeed().WithEntityAccess()){if
(component.ValueRO.RadiansPerSecond
0){ecb.DestroyEntity(entity);}}ecb.Playback(state.EntityManager);ecb.Dispose();#endregion
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback