Unity ECS Skill
Data-Oriented Technology Stack (DOTS) and Entity Component System development for Unity.
Overview
This skill provides capabilities for implementing high-performance gameplay systems using Unity's Entity Component System, Jobs System, and Burst compiler.
Capabilities
Entity Component System
- Create IComponentData structs
- Implement ISystem and SystemBase
- Manage entity archetypes
- Handle entity queries and batching
Jobs System
- Create IJob implementations
- Implement IJobEntity for entity processing
- Handle job dependencies and scheduling
- Manage native containers
Burst Compiler
- Enable Burst compilation for jobs
- Optimize with SIMD instructions
- Profile Burst-compiled code
- Handle Burst limitations
Hybrid Workflow
- Bridge ECS with GameObjects
- Use companion components
- Convert existing systems to ECS
- Implement baking workflow
Prerequisites
- Unity 2022.3+ recommended
- Entities package (1.0+)
- Mathematics package
- Burst package
Usage Patterns
Component Data
public struct MoveSpeed : IComponentData
{
public float Value;
}
public struct Velocity : IComponentData
{
public float3 Value;
}
System Implementation
[BurstCompile]
public partial struct MovementSystem : ISystem
{
[BurstCompile]
public void OnUpdate(ref SystemState state)
{
float deltaTime = SystemAPI.Time.DeltaTime;
foreach (var (transform, velocity) in
SystemAPI.Query<RefRW<LocalTransform>, RefRO<Velocity>>())
{
transform.ValueRW.Position += velocity.ValueRO.Value * deltaTime;
}
}
}
Job Example
[BurstCompile]
public partial struct MovementJob : IJobEntity
{
public float DeltaTime;
void Execute(ref LocalTransform transform, in Velocity velocity)
{
transform.Position += velocity.Value * DeltaTime;
}
}
Best Practices
- Keep components small and focused
- Use Burst for all performance-critical jobs
- Batch entity operations
- Minimize structural changes
- Profile with Entity Debugger