This is an integrated solution for building AssetBundles and loading Assets. what it can do is about to set and build AssetBundles automatically, and provide load APIs. It implemented the auto resource control on Prefbs(Instantiated GameObjects) and Scenes, and implemented the weak reference tech on all assets to ensure the assets will not duplicated in memory as possible as it can, and guarantee the assets will be unloaded correctly.
Supported : Unity5, Unity2017, Unity2018, Unity2019
The Features :
1. Set AssetBundle automatically: no asset duplicated, minimal the size of AssetBundles, pack referenced assets together if they will not duplicated, minimal the numbers of AssetBundles, minimal the loading time.
2. Auto asset processing: atuo create SpriteAtlas, prevent built-in shader compiled multi times… etc.
3. Runtime assets auto control: the Prefab instance and Scene assets was totally controlled, when GameObject pool was destroyed or scene was unloaded the auto resource control will decide unload assets or not Automatically. no asset duplicated in memory.
4. Runtime assets semi-auto control: all the assets was referenced by weakreference in the mid-level controller, it can make sure assets will not duplicated in memory as it can.
5. Developer friendly: load assets in Editor no need to build or do anything else, and the unload logic works on any load mode(we have 5 kinds of load modes). All APIs come from singleton and lazy-init, APIs looks like the UnityEngine.Resources APIs, no more learning costs. All the APIs that has Generic type and Non-generic type, good for developers who is using lua script. Only 3 Buttons click for building AssetBundles, and the build can have platform and version selection, and Patch info file between versions can be generated if you want, convience for AssetBundle updating.
6. No maintenance: any one request unload any asset will not forece unload the asset while someone else is using the asset, you just to request load and unload assets by you need, the auto resource control will decide to unload or not. it can reduce coupling.
7. Performance: full of ObjectPools. Unload asset may call AssetBundle.Unload(true) or call AssetBundle.Unload(false) + Resources.UnloadUnusedAssets(), decided by auto resource control, can make unload proccess more efficiency.
8. Computable overhead: the auto controller cause a little overhead, it mainly comes from AssetBundle (loaded) serialized file, depending on which platform you published. For example PC takes 2*7KB for each, but the Android it takes 2*256KB for each (datas from Unity5). it can be caculated.
9. Full Demos: we have 12 demo scenes, all the APIs was used in demo scene scripts, you can learn to use and test with Profiler easily.
These are what AssetBundleMaster can do, simplify the AssetBundle build proccess, reduce coupling, powerful API.
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.
Hope this solution can help you, Have fun.