using Unity.Collections; using Unity.Entities; using Unity.Transforms; namespace Unity.TinyGems { [UpdateAfter(typeof(TransformSystemGroup))] public class HudSystem : SystemBase { protected override void OnCreate() { base.OnCreate(); RequireSingletonForUpdate(); } protected override void OnUpdate() { var activeScene = GetSingleton(); var cmdBuffer = new EntityCommandBuffer(Allocator.TempJob); Entities .ForEach(( in Entity entity, in HudShowState showScene, in DynamicBuffer hudObjects) => { for (var i = 0; i < hudObjects.Length; i++) { var isVisible = activeScene.Value == showScene.Value; if (isVisible) cmdBuffer.RemoveComponent(hudObjects[i].Value); else cmdBuffer.AddComponent(hudObjects[i].Value); } }).Run(); cmdBuffer.Playback(EntityManager); cmdBuffer.Dispose(); } } }