This is a solustion for building and loading AssetBundle, what it did is about to set and build AssetBundles automatically, and provide resources and scene load API. It can auto control all the resources that load and unload on Prefbs and Scenes, and to all assets, it using the weakreferences on the mid-level asset controller as a trick of asset auto control.
Supported : Unity5, Unity2017, Unity2018, Unity2019
The Features :
1. Set AssetBundle automatically, no asset duplicated.
2. Auto asset processing, such as create Sprite Atlas, prevent LightMap being stripped, avoid shader compiled multi times… etc.
3. Runtime assets auto control, the Prefab and Scene assets was totally controlled, only when all instance destroyed or scene unloaded the assets will be unload Automatically.
Assets will not duplicated in memory.
4. Runtime assets semi-auto control, all the assets was referenced by weakreference in the mid-level controller, it will not duplicated even user unload asset incorrectly.
5. Developer friendly, load assets in Editor no need to build or do anything else, everything are singleton and lazy-init, no learning costs. Only 3 Button click for building assetbundles, and Patch info file between versions can be generated if you want.
6. Performance, no polling logic, full of ObjectPools.
7. Overhead, the auto controller cause a little overhead, it mainly comes from AssetBundle serialized file, depending on which platform you published.
The AssetBundle auto set obey these rules :
1. Ensure no asset duplicated in AssetBundles.
2. If an asset that no need to be single AssetBundle, set assetbundle name to be Null, let the engine to build it.
Now we make it no duplicated assets and the minimal count of assetbundles.
It's recommand that don't set assetbundle manually, even though your project has special need for updating or something else, in most cases they don't match the characteristic of the engine,
typically the case of materials using built-in shaders.
Hope this solution can help you, Have fun.