public void LoadAssetsAsync <T>(T source,
                                        List <AssetInfo> assetInfos,
                                        Action <T, List <UnityObject> > handlerAction,
                                        AssetLoadOption assetLoadOption = default(AssetLoadOption))
        {
            if (assetInfos != null)
            {
                var batch = AssetLoadRequestBatch <T> .Alloc(source, assetInfos.Count(), !assetLoadOption.DontAutoActive);

                batch.OnLoaded = handlerAction;
                int count        = 0;
                var singleOption = new AssetLoadOption(true, assetLoadOption.Parent,
                                                       assetLoadOption.Recyclable, assetLoadOption.PostProcessorFactory, assetLoadOption.ObjectType);
                foreach (var assetInfo in assetInfos)
                {
                    var req = AppendAssetRequest(source, assetInfo, null, singleOption);
                    batch.PackRequest(req);
                    count++;
                }

                if (count == 0)
                {
                    AssetLoadRequestBatch <T> .Free(batch);
                }
            }
        }
 public static void Free(AssetLoadRequestBatch <T> batch)
 {
     if (!batch._isDisposed)
     {
         batch._isDisposed = true;
         batch._source     = default(T);
         batch.OnLoaded    = null;
         batch._loadedUnityObjects.Clear();
         ObjectAllocatorHolder <AssetLoadRequestBatch <T> > .Free(batch);
     }
 }
            public override void Dispose()
            {
                base.Dispose();

                if (_requestBatch != null)
                {
                    AssetLoadRequestBatch <T> .Free(_requestBatch);

                    _requestBatch = null;
                }

                Source   = default(T);
                OnLoaded = null;
            }
示例#4
0
        public void LoadAssetsAsync <T>(T source,
                                        IEnumerable <AssetInfo> assetInfos,
                                        Action <T, IEnumerable <UnityObject> > handlerAction,
                                        AssetLoadOption assetLoadOption = default(AssetLoadOption))
        {
            if (assetInfos != null)
            {
                var batch = AssetLoadRequestBatch <T> .Alloc();

                batch.OnLoaded = handlerAction;
                int count = 0;
                foreach (var assetInfo in assetInfos)
                {
                    var req = AppendAssetRequest(source, assetInfo, null, assetLoadOption);
                    batch.PackRequest(req);
                    count++;
                }

                if (count == 0)
                {
                    AssetLoadRequestBatch <T> .Free(batch);
                }
            }
        }