Lazy loaded image
DOTS 额外知识点
Words 157Read Time 1 min
2025-7-27
2025-7-29
type
status
date
slug
summary
tags
category
icon
password
comment

DOTS 补充知识点

ECS烘焙注意

notion image
这里我们使用空物体左右角色的父物体时,我们需要注意的是空物体依然不会被烘焙

TransformUsageFlags 参数总览

参数名
是否添加Transform组件
描述用途
适用场景举例
注意事项
None
❌ 否
不使用 Transform 系统。不生成任何与 Transform 相关的组件
纯数据实体,不参与位置、旋转、缩放等
Renderable
✅ 是
添加最小的 Transform 数据,仅用于渲染。添加 LocalToWorld 组件
静态可渲染物体,位置不变
Dynamic
✅ 是
完整的 Transform 控制,添加如 LocalTransformLocalToWorldParent
可移动/旋转的对象,如玩家、敌人
x,y,z轴的值只能为一致的
WorldSpace
✅ 是
只使用 LocalToWorld,用于设置世界空间位置,不含层级关系和局部变换
摄像机、UI锚点、特效锚点等
ManualOverride (不常用)
❌ 否(或手动)
表示用户将手动设置 Transform 的同步,不使用默认系统
特殊控制需求,如自定义同步逻辑
NonUniformScale
✅ 是
不均匀缩放
UI,血条,进度条

系统窗口

notion image
系统窗口有我们所有的系统,我们可以查看系统控制的实体数量

Allocator 枚举参数详解

参数名
生命周期 / 释放时间
是否需要手动释放
适用场景举例
Allocator.Temp
仅当前帧有效
✅ 是
临时使用,例如在一帧中使用 NativeArray 临时遍历
Allocator.TempJob
当前 Job 执行周期内有效
✅ 是
在 Job 中创建临时数据
Allocator.Persistent
程序或系统运行期间持久存在
✅ 是
长期存储,如系统变量、跨帧缓存、组件缓存等
Allocator.None
表示没有分配(特殊用途)
❌ 否
很少用到,通常内部或用于空数组

With 系列函数对比

函数名
功能说明
示例用途
WithAll<T>()
实体 必须包含所有指定组件
查询具有 TranslationMoveSpeed 的所有实体
WithAny<T1, T2>()
实体 包含任意一个指定组件
查询具有 HealthMana 的实体
WithNone<T>()
实体 不能包含指定组件
查询不包含 DeadTag 的实体
WithDisabled<T>()
实体包含 T 组件,且该组件当前处于“禁用状态”
仅处理禁用的 NavAgent
WithAbsent<T>() (罕用)
实体当前没有该组件(已移除)
主要用于对比系统执行过程中的组件增删变化
WithPresent<T>()
他只关心组件是否存在,是否启用并不关心

Debug技巧

在使用Burst编译器的时候,我们不能从Console窗口直接点击错误跳转到对应的代码行,我们可以暂时关闭Burst编译器来进行Debug。
上一篇
Unity RTS 简单队列
下一篇
Unity Dots 实战

Comments
Loading...