public static void UpdateLeoSystems() { var gameSystemAsset = AssetEditorTools.LoadOrCreate <LeoEcsSettingsAsset>(AssetPath); var systems = GetAllSystems(); var data = gameSystemAsset.systemsData; var systemsContainer = data.systems; foreach (var ecsSystem in systems) { if (systemsContainer.Any(x => x.system?.GetType() == ecsSystem.GetType())) { continue; } var updateType = PlayerLoopTiming.Update; var systemType = ecsSystem.GetType(); var updateTimingAttribute = systemType.GetCustomAttribute <UpdateTimingAttribute>(); updateType = updateTimingAttribute == null ? updateType : updateTimingAttribute.updateType; systemsContainer.Add(new EcsSystemData() { system = ecsSystem, systemData = new LeoSystemData() { updateType = updateType, } }); } gameSystemAsset.MarkDirty(); AssetDatabase.Refresh(); }