unity-ecs-patterns
Implementar Padrões Unity ECS
Criando jogos Unity de alto desempenho requer padrões especializados orientados a dados que a OO tradicional não pode fornecer. Esta habilidade fornece padrões ECS prontos para produção usando DOTS, Jobs e Burst para jogos que escalam para milhares de entidades.
Baixar o ZIP da skill
Upload no Claude
Vá em Configurações → Capacidades → Skills → Upload skill
Ative e comece a usar
Testar
A utilizar "unity-ecs-patterns". Create an ECS component for player health with current and max values, and a system that heals players over time.
Resultado esperado:
- Component Definition:
- ```csharp
- public struct Health : IComponentData
- {
- public float Current;
- public float Max;
- }
- ```
- Healing System:
- ```csharp
- [BurstCompile]
- public partial struct HealthRegenSystem : ISystem
- {
- public void OnUpdate(ref SystemState state)
- {
- float deltaTime = SystemAPI.Time.DeltaTime;
- float regenRate = 5f;
- foreach (var health in
- SystemAPI.Query<RefRW<Health>>())
- {
- health.ValueRW.Current = math.min(
- health.ValueRO.Max,
- health.ValueRO.Current + regenRate * deltaTime
- );
- }
- }
- }
- ```
A utilizar "unity-ecs-patterns". How do I convert a GameObject to an entity with authoring?
Resultado esperado:
- 1. Create an Authoring MonoBehaviour:
- ```csharp
- public class EnemyAuthoring : MonoBehaviour
- {
- public float Speed;
- public float Health;
- class Baker : Baker<EnemyAuthoring>
- {
- public override void Bake(EnemyAuthoring authoring)
- {
- var entity = GetEntity(TransformUsageFlags.Dynamic);
- AddComponent(entity, new Speed { Value = authoring.Speed });
- AddComponent(entity, new Health { Current = authoring.Health, Max = authoring.Health });
- }
- }
- }
- ```
- 2. Add the authoring component to a GameObject in the Editor
- 3. The baking system automatically converts it to an entity at build time
A utilizar "unity-ecs-patterns". Write a parallel job that damages all enemies in a radius around each entity.
Resultado esperado:
This requires a spatial hash approach. First, build a spatial hash map in a parallel job. Then run a second pass that queries nearby cells and applies damage. The spatial hash function uses prime number multiplication for uniform distribution: `hash = x * 73856093 ^ y * 19349663 ^ z * 83492791`.
Auditoria de Segurança
SeguroAll 59 static findings are false positives. The skill contains Unity ECS documentation with code examples. Detected patterns (hash functions, system API references, backticks) are legitimate game development patterns and Markdown formatting, not security threats.
Pontuação de qualidade
O Que Você Pode Construir
Desenvolvedor Indie Criando Jogos Críticos para Performance
Crie sistemas de jogo eficientes que lidam com milhares de inimigos, partículas ou unidades sem degradação de performance usando padrões ECS.
Programador de Gameplay Aprendendo DOTS
Transição dos padrões tradicionais Unity MonoBehaviour para arquitetura ECS orientada a dados com exemplos guiados e melhores práticas.
Artista Técnico Criando Sistemas de Partículas
Construa sistemas de partículas e efeitos massivos que processam em paralelo usando Jobs e compilação Burst para performance semelhante a GPU em CPU.
Tente Estes Prompts
Crie um componente Speed e um MovementSystem em Unity ECS usando ISystem e BurstCompile. O sistema deve mover entidades para frente baseado no valor de velocidade.
Escreva um SpawnSystem que usa EntityCommandBuffer para criar entidades em runtime com um componente Spawner. Inclua versões single-threaded e job paralelo.
Crie um CharacterAspect que agrupa componentes Health, Speed e LocalTransform. Inclua um método para aplicar dano que respeita lógica de absorção de escudo.
Construa um sistema de hash espacial usando NativeParallelMultiHashMap para consultas eficientes de colisão. Inclua a função hash e job paralelo para atualizar a grade espacial.
Melhores Práticas
- Use ISystem em vez de SystemBase para máxima performance e compatibilidade com Burst
- Sempre aplique [BurstCompile] em jobs e sistemas para performance otimizada
- Adie mudanças estruturais (criar/destruir/adicionar) usando EntityCommandBuffer para evitar quebrar scheduling de jobs
Evitar
- Evite adicionar tipos gerenciados (classes, strings, arrays) em componentes pois eles quebram compilação Burst
- Não realize mudanças estruturais dentro de jobs paralelos; use EntityCommandBuffer.ParallelWriter
- Evite consultar entidades uma a uma; use entity queries e ToComponentDataArray para operações em lote
Perguntas Frequentes
Qual versão do Unity suporta ECS?
Como ECS é diferente de MonoBehaviour?
Posso misturar ECS com GameObjects tradicionais?
O que é Burst e por que devo usar?
Quantas entidades ECS consegue lidar?
Devo usar Aspects ou acesso direto a componentes?
Detalhes do Desenvolvedor
Autor
wshobsonLicença
MIT
Repositório
https://github.com/wshobson/agents/tree/main/plugins/game-development/skills/unity-ecs-patternsReferência
main
Estrutura de arquivos
📄 SKILL.md