private void LoadAsset(string path, AssetLoaderKey assetKey) { UnityEngine.Object asset; if (loadedAssets.ContainsKey(path) == false) { asset = Resources.Load <Sprite>(path); loadedAssets[path] = asset; loadedObjects[path] = new List <GameObject>(); } else { asset = loadedAssets[path]; } if (asset != null) { AssetLoader loadAsset = assetKey.loader.LoadAsset; loadAsset.Invoke(assetKey.key, asset); if (Collection.Contains(assetKey.obj) == false) { Collection.Add(assetKey.obj); var notify = assetKey.obj.AddComponent <NotifyOnDestroy>(); loadedObjects[path].Add(assetKey.obj); notify.Destroyed += Remove; notify.Path = path; } } }
public void GetAssets(GameObject obj, IAssetLoader assetLoader, AssetRequest request) { var poolableKey = new AssetLoaderKey(obj, assetLoader, request.key); LoadAsset(request.path, poolableKey); }