//------------------------------------------------------------------------- public void _asyncLoadAsset(_eAsyncAssetLoadType async_assetloadtype, string asset_path, string asset_name, Action <UnityEngine.Object> loaded_action, AsyncAssetLoadGroup group) { IAsyncAssetLoader asynce_assetloader = null; mMapIAsyncAssetLoader.TryGetValue(asset_path, out asynce_assetloader); if (asynce_assetloader == null) { switch (async_assetloadtype) { case _eAsyncAssetLoadType.WWW: asynce_assetloader = new WWWAsyncAssetLoader(this); break; case _eAsyncAssetLoadType.LoacalAB: asynce_assetloader = new LocalABAsyncAssetLoader(this); break; default: break; } } asynce_assetloader.createAssetLoad(asset_path, asset_name, group, loaded_action); mMapIAsyncAssetLoader[asset_path] = asynce_assetloader; }
//------------------------------------------------------------------------- public void asyncLoadBundle(string bundle_path, _eAsyncAssetLoadType loader_type, Action <string, AssetBundle> loaded_action) { AssetBundle asset_bundle = null; if (MapAssetBundle.TryGetValue(bundle_path, out asset_bundle)) { loaded_action(bundle_path, asset_bundle); return; } else { Action <string, AssetBundle> action = null; if (!MapLoadAssetBundleCallBack.TryGetValue(bundle_path, out action)) { action = loaded_action; } else { action += loaded_action; } } if (loader_type == _eAsyncAssetLoadType.LocalBundle) { AsyncAssetLoaderMgr.LocalBundleAsyncLoader.getAssetBundle(bundle_path, _loadAssetBundleCallBack); } else if (loader_type == _eAsyncAssetLoadType.WWWBundle) { AsyncAssetLoaderMgr.WWWBundleAsyncLoader.getAssetBundle(bundle_path, _loadAssetBundleCallBack); } //return null; }
//------------------------------------------------------------------------- public LoaderTicket asyncLoadAsset(string bundle_path, string asset_name, _eAsyncAssetLoadType loader_type, Action <LoaderTicket, string, UnityEngine.Object> loaded_action) { LoaderTicket tick = null; if (loader_type == _eAsyncAssetLoadType.LocalBundleAsset || loader_type == _eAsyncAssetLoadType.LocalRawAsset) { tick = AsyncAssetLoaderMgr.LocalAssetAsyncLoader.getAsset(bundle_path, asset_name, loader_type, loaded_action); } else if (loader_type == _eAsyncAssetLoadType.WWWBundleAsset || loader_type == _eAsyncAssetLoadType.WWWRawAsset) { tick = AsyncAssetLoaderMgr.WWWAssetAsyncLoader.getAsset(bundle_path, asset_name, loader_type, loaded_action); } return(tick); }
//------------------------------------------------------------------------- public LoaderTicket getAsset(string asset_path, string asset_name, _eAsyncAssetLoadType loader_type, Action <LoaderTicket, string, UnityEngine.Object> bundle_asset_callback) { LoaderTicket loader_ticket = null; UnityEngine.Object bundle_asset = null; string asset_key = asset_path + asset_name; if (MapBundleAsset.TryGetValue(asset_key, out bundle_asset)) { bundle_asset_callback(loader_ticket, asset_key, bundle_asset); } else { if (loader_type == _eAsyncAssetLoadType.LocalBundleAsset) { if (MapBundle.ContainsKey(asset_path)) { var asset_bundle = MapBundle[asset_path]; bundle_asset = asset_bundle.LoadAsset(asset_name); bundle_asset_callback(loader_ticket, asset_key, bundle_asset); } else { loader_ticket = AsyncAssetLoaderMgr.LocalBundleAsyncLoader.getAssetBundle(asset_path, _loadAssetBundleCallBack); } } else { loader_ticket = AsyncAssetLoaderMgr.WWWAsyncLoader.getIsDoneWWW(asset_path, _loadAssetWWWCallBack); } if (loader_ticket != null) { loader_ticket.UserData = asset_name; Dictionary <LoaderTicket, Action <LoaderTicket, string, UnityEngine.Object> > map_ticketandcallback = null; if (!MapLoaderTicketAndCallBack.TryGetValue(asset_path, out map_ticketandcallback)) { map_ticketandcallback = new Dictionary <LoaderTicket, Action <LoaderTicket, string, UnityEngine.Object> >(); MapLoaderTicketAndCallBack[asset_path] = map_ticketandcallback; } map_ticketandcallback[loader_ticket] = bundle_asset_callback; } } return(loader_ticket); }
//------------------------------------------------------------------------- public LoaderTicket asyncLoadLocalBundle(List <string> list_bundle_path, _eAsyncAssetLoadType loader_type, Action <List <AssetBundle> > loaded_action) { LoaderTicket loader_ticket = new LoaderTicket(); Dictionary <string, AssetBundle> map_needloadab = new Dictionary <string, AssetBundle>(); loader_ticket.MapNeedLoadAssetBundle = map_needloadab; Dictionary <string, AssetBundle> map_loadedab = new Dictionary <string, AssetBundle>(); loader_ticket.MapLoadedAssetBundle = map_loadedab; foreach (var i in list_bundle_path) { AssetBundle asset_bundle = null; if (MapAssetBundle.TryGetValue(i, out asset_bundle)) { map_loadedab[i] = asset_bundle; } else { map_needloadab[i] = null; if (loader_type == _eAsyncAssetLoadType.LocalBundle) { AsyncAssetLoaderMgr.LocalBundleAsyncLoader.getAssetBundle(i, _loadAssetBundleCallBack); } else if (loader_type == _eAsyncAssetLoadType.WWWBundle) { AsyncAssetLoaderMgr.WWWBundleAsyncLoader.getAssetBundle(i, _loadAssetBundleCallBack); } } } if (loader_ticket.MapLoadedAssetBundle.Count == list_bundle_path.Count) { List <AssetBundle> list_bundle = new List <AssetBundle>(); foreach (var i in loader_ticket.MapLoadedAssetBundle) { list_bundle.Add(i.Value); } loaded_action(list_bundle); } else { MapLoaderTicket[loader_ticket] = loaded_action; } return(loader_ticket); }