public override void ProvideAsync(AssetAsyncLoadHandle loadHandle, Type typ)
        {
            if (!TryGetABContext(loadHandle.Location, out var abPathContext))
            {
                return;
            }
            var abInstance = FindOrCreateABInstance(abPathContext.ABName, loadHandle.Container);

            abInstance.LoadAssetAsync(abPathContext.Path, unityObject => {
                loadHandle.Asset.SetAsset(unityObject, abInstance);
            }, typ);
        }
        private static IEnumerator SimulateDelayLoadScene(AssetAsyncLoadHandle loadHandle, bool add)
        {
            yield return(DEBUG_WAIT);

            var asyncOperation = SceneManager.LoadSceneAsync(loadHandle.Location + ".unity",
                                                             add ? LoadSceneMode.Additive : LoadSceneMode.Single);

            while (!asyncOperation.isDone)
            {
                yield return(null);
            }
            loadHandle.Complete();
        }
        private IEnumerator SimulateDelayLoad(AssetAsyncLoadHandle loadHandle, Type typ)
        {
            yield return(DEBUG_WAIT);

            var path = loadHandle.Location;

            if (ConvertPath(ref path) || loadHandle.Location.StartsWith("Assets"))
            {
                loadHandle.Location = path;
                                #if UNITY_EDITOR
                var unityObject = UnityEditor.AssetDatabase.LoadAssetAtPath(loadHandle.Location, typ);
                loadHandle.Asset.SetAsset(unityObject, null);
                                #endif
            }
            else
            {
                var req = Resources.LoadAsync(loadHandle.Location, typ);
                req.completed += operation => {
                    loadHandle.Asset.SetAsset(operation.isDone ? req.asset : null, null);
                };
            }
        }
        public override void ProvideSceneAsync(AssetAsyncLoadHandle loadHandle, bool add)
        {
            var service = CSharpServiceManager.Get <GlobalCoroutineRunnerService>(CSharpServiceManager.ServiceType.COROUTINE_SERVICE);

            service.StartCoroutine(SimulateDelayLoadScene(loadHandle, add));
        }
 public override void ProvideSceneAsync(AssetAsyncLoadHandle loadHandle, bool add)
 {
 }
 public abstract void ProvideSceneAsync(AssetAsyncLoadHandle loadHandle, bool add);
 public abstract void ProvideAsync(AssetAsyncLoadHandle loadHandle, Type typ);