Releases: CoderGamester/Unity-Services
Releases · CoderGamester/Unity-Services
Release 2.0.0
What's Changed
New:
- Added Services Explorer window (
Tools > GameLovers > Services Explorer) with 13 live-refresh tabs: Overview, Installer, MessageBroker, Tick, Coroutine, Pool, Data, Time, RNG, AssetResolver, Versioning, Assets Importer, Addressable Ids — works in both Edit and Play mode - Menu stubs under
Tools > GameLovers:-
Versioning / Refresh Version DataandVersioning / Open in Explorer -
Assets Importer / Import Assets DataandAssets Importer / Open in Explorer -
Addressable Ids / Generate Addressable IdsandAddressable Ids / Open in Explorer
-
- Added
Assets > Create > GameLovers Services > …scaffolders: Message, Command, Service, Pool Entity (template-based,$NAME$ /$NAMESPACE$ substitution) - Absorbed
com.gamelovers.assetsimporterv0.5.2 into this package - Added
IAssetLoader,ISceneLoader,AddressablesAssetLoadertoRuntime/AssetsImporter/(nsGameLovers.Services.AssetsImporter) - Added
AddressableConfig,AssetConfigsScriptableObject<TId,TAsset>,AssetLoaderUtils,AssetReferenceScenetoRuntime/AssetsImporter/(nsGameLovers.Services.AssetsImporter) - Added
AssetResolverService(implementsIAssetResolverService/IAssetAdderService) toRuntime/root (nsGameLovers.Services) - Added Editor/AssetsImporter/:
AssetsImporter,AssetsToolImporter,AssetConfigsImporter,AddressableIdsGenerator,AddressablesIdGeneratorSettings(nsGameLovers.Services.AssetsImporter.Editor) - Added importable Samples under
Samples~/(importable via Unity Package Manager > GameLovers Services > Samples).-
Services Playground — single-scene, zero-setup walk-through that wires every foundation service via
MainInstallerand exercises 10 of 13 Services Explorer tabs end-to-end. -
Asset Resolver — focused demo of
AssetResolverServiceend-to-end (AddConfigs/RequestAsset/UnloadAssets) withSpriteConfigs : AssetConfigsScriptableObject<SpriteId, Sprite>. Drives the three Services Explorer tabs the Playground does not cover (Asset Resolver, Assets Importer, Addressable Ids).
-
Services Playground — single-scene, zero-setup walk-through that wires every foundation service via
Changed:
- Addressable Ids generator and Assets Importer settings moved from
Assets/*.assetScriptableObjects toProjectSettings/ScriptableSingletons (mirrorsVersioningEditorSettings). - Generation logic extracted from
AddressableIdsGeneratorintoAddressableIdsGeneratorUtils(staticinternal); importer discovery/import logic extracted intoAssetsImporterEditorUtils. Tools/Assets Importer/*andTools/AddressableIds Generator/*menu entries removed. UseTools/GameLovers/Assets Importer/...,Tools/GameLovers/Addressable Ids/..., or the Services Explorer tabs instead.Toggle Auto Import On Refreshmenu entry removed. The toggle now lives exclusively in the Services Explorer Assets Importer tab.Assets/AssetsImporter.assetandAssets/AddressablesIdGeneratorSettings.assetare no longer used (settings moved toProjectSettings/); safe to delete from consumer projects.- Deleted editor source files:
AssetsImporter.cs,AssetsToolImporter.cs,AddressableIdsGenerator.cs,AddressablesIdGeneratorSettings.cs. - Folder reorganization:
Runtime/now has domain subfoldersDependencyInjection/,Commands/,Pooling/,AssetsImporter/;Editor/now hasVersioning/andAssetsImporter/subfolders Installer.csandMainInstaller.csmoved toRuntime/DependencyInjection/(namespace unchanged:GameLovers.Services)CommandService.cstrimmed to concrete class only; command contract interfaces extracted toRuntime/Commands/under nsGameLovers.Services.CommandsPoolService.cstrimmed to concrete class only; pool interfaces + implementations moved toRuntime/Pooling/under nsGameLovers.Services.PoolingObjectPool.cs(578 lines, 10 types) split into 4 files underRuntime/Pooling/:IPoolEntity.cs,IObjectPool.cs,ObjectPool.cs,GameObjectPool.csVersionEditorUtils.csandGitEditorProcess.csmoved toEditor/Versioning/; re-namespaced fromGameLovers.Services.Editor→GameLovers.Services.Versioning.Editor- Added new hard dependencies:
com.unity.addressables(1.21.20) andcom.cysharp.unitask(2.5.10)
Fixed:
AddressablesAssetLoader.UnloadAssetno longer callsGC.Collect(),GC.WaitForPendingFinalizers(), orResources.UnloadUnusedAssets(). The method now only decrements the Addressables reference count. The old implementation caused PlayMode Test Runner crashes on macOS and O(total-assets-in-memory) main-thread stalls per per-asset release. Callers that need memory reclamation should invokeResources.UnloadUnusedAssets()themselves at appropriate moments (scene transitions, boot, memory-pressure events); Unity also runs an unused-assets sweep automatically onLoadSceneMode.Singlescene loads.- Corrected
IAssetLoader.UnloadAssetXML documentation: removed the incorrect "will also destroy GameObject instances" claim —Addressables.Release(gameObject)does not destroy the instance; callers mustObject.Destroyit separately. IAsyncCoroutine.StopCoroutine(bool triggerOnComplete)now honors itstriggerOnCompleteparameter and flipsIsCompletedtotrueandIsRunningtofalseafter stopping. The previous implementation always invokedOnCompletecallbacks regardless of the flag and left state flags unchanged, so consumers could not distinguish a stopped coroutine from a running one andtriggerOnComplete: falsewas silently ignored.GameObjectPool.Dispose()andGameObjectPool<T>.Dispose()now skip pooled entries whose underlyingGameObjecthas already been destroyed by an external owner (e.g. a parent GameObject was destroyed while pooled instances were still reparented under it viaDespawnToSampleParent).
Breaking Changes — see MIGRATION.md for details:
- Pool types moved from
GameLovers.ServicestoGameLovers.Services.Pooling(IPoolService,IObjectPool,IObjectPool<T>,ObjectPool<T>,ObjectPoolBase<T>,GameObjectPool,GameObjectPool<T>,IPoolEntitySpawn,IPoolEntitySpawn<T>,IPoolEntityDespawn,IPoolEntityObject<T>).PoolServiceconcrete class remains inGameLovers.Services. - Command contract types moved from
GameLovers.ServicestoGameLovers.Services.Commands(IGameCommandBase,IGameCommand<>,IGameServerCommand<>,ICommandService<>).CommandService<>concrete class remains inGameLovers.Services. GameLovers.AssetsImporter.*renamed toGameLovers.Services.AssetsImporter.*GameLovers.AssetsImporter.AssetResolverServiceis nowGameLovers.Services.AssetResolverServiceGameLovers.Services.Editor.*(versioning editor) renamed toGameLovers.Services.Versioning.Editor.*IAssetLoader.UnloadAssetAsync<T>(T, Action)→IAssetLoader.UnloadAsset<T>(T, Action): method renamed (droppedAsyncsuffix) and return type changed fromUniTasktovoidto reflect its synchronous nature. Replaceawait loader.UnloadAssetAsync(x);withloader.UnloadAsset(x);.- Code generated by
AddressableIdsGeneratormust be re-generated (updated emittedusingstatement)
Full Changelog: 1.0.1...2.0.0
Release 1.0.1
Changed:
- Updated dependency
com.gamelovers.dataextensionstocom.gamelovers.gamedata - Updated assembly definitions to reference
GameLovers.GameData
Full Changelog: 1.0.1...1.0.1
Release 1.0.0
New:
- Added AGENTS.md document to help guide AI coding assistants to understand and work with this package library
- Added an entire test suit of unit/integration/performance/smoke tests to cover all the code for all services in this package
Changed:
- Changed VersionServices namespace from GameLovers to GameLovers.Services to maintain consistency with other services in the package.
- Made CallOnSpawned, CallOnSpawned<TData>, and CallOnDespawned methods virtual in ObjectPoolBase<T> to allow derived pool classes to customize lifecycle callback behavior.
Fixed:
- Fixed the README.md file to now follow best practices in OSS standards for Unity's package library projects
- Fixed linter warnings in VersionServices.cs (redundant field initialization, unused lambda parameter, member shadowing)
- Fixed GameObjectPool not invoking IPoolEntitySpawn.OnSpawn() and IPoolEntityDespawn.OnDespawn() on components attached to spawned GameObjects.
Full Changelog: 1.0.0...1.0.0
Release 0.15.1
What's Changed
New:
- Added protected property for all private fields in CommandService for access to any game-specific project inheritance
Full Changelog: 0.15.0...0.15.1
0.15.0
What's Changed
New:
- Added StartDelayCall method to ICoroutineService to allow deferred methods to be safely executed within the bounds of a Unity Coroutine
- Added the possibility to know the current state of an IAsyncCoroutine
- Added the access to the Sample Entity used to generete new entites within an IObjectPool and destroy it when disposing the object pool
- Added the possibility to reset an IObjectPool to a new state
Full Changelog: 0.14.1...0.15.0
Release 0.14.1
What's Changed
Fixed:
- Fixed the RngLogic.Range(float, float, bool) method to allow having the same min and max values with maxInclusive set to true
Full Changelog: 0.14.0...0.14.1
Release 0.14.0
What's Changed
New:
- Added PublishSafe method to IMessageBrokerService to allow publishing messages safely in chase of chain subscriptions during publishing of a message
Changed:
- Subscribe and Unsubscribe throw an InvalidOperationException when being executed during a message being published
Fixed:
- CoroutineTests issues running when building released projects
Full Changelog: 0.13.2...0.14.0
Release 0.13.2
What's Changed
New:
- Added a constructor to GameObjectPool that allows to setup a costum instantiator
Fixed:
- Fixed ObjectPool & PoolService tests that would block builds sometimes
Full Changelog: 0.13.1...0.13.2
0.13.1
What's Changed
Fixed:
- Fixed the IInstaller when trying to bind multiple interfaces at the same time
Full Changelog: 0.13.0...0.13.1
Release 0.13.0
What's Changed
Changed:
- Changed CommandService to now receive the MessageBrokerService in the command and help communication with the game architecture
Full Changelog: 0.12.2...0.13.0