示例#1
0
    public async void InternalLoadAssetAsync(string path, string file, CallBackDelegate <object, object> callBack, DelegateLoadBundleMehod method, GetPathFuncDelegate getExternalPathFunc, GetDependBundlesFuncDelegate getExternalDependcesFunc)
    {
        string assetBundleName = path + file;
        string assetBundlePath = getExternalPathFunc(assetBundleName);

        string[] dependencies = getExternalDependcesFunc(assetBundleName);
        if (taskList.Contains(assetBundleName))
        {
            await new WaitUntil(() => !this.taskList.Contains(assetBundleName));
        }
        taskList.Add(assetBundleName);
        if (!this.bundles.ContainsKey(assetBundleName))
        {
            foreach (string dependency in dependencies)
            {
                if (string.IsNullOrEmpty(dependency))
                {
                    continue;
                }
                if (!this.bundles.ContainsKey(dependency) && !TestTaskList.Contains(dependency))
                {
                    await this.MyLoadOneBundleAsync(dependency, path);
                }
                else if (TestTaskList.Contains(dependency))
                {
                    await new WaitUntil(() => this.bundles.ContainsKey(assetBundleName) == true);
                }
            }
        }
        foreach (string dependency in dependencies)
        {
            await new WaitUntil(() => this.bundles.ContainsKey(dependency) == true);
        }
        method(path, file, callBack);
        taskList.Remove(assetBundleName);
    }
示例#2
0
 public void LoadTextTureAsync(string path, string file, CallBackDelegate <object, object> callBack, GetPathFuncDelegate getPathFunc, GetDependBundlesFuncDelegate getDependcesFunc)
 {
     this.InternalLoadAssetAsync(path, file, callBack, new DelegateLoadBundleMehod(this.SetTexture), getPathFunc, getDependcesFunc);
 }
示例#3
0
    public async void InternalLoadExternalAssetAsync(string path, string file, CallBackDelegate <object, object> callBack, DelegateLoadExternalMehod method, GetPathFuncDelegate getExternalPathFunc, GetDependBundlesFuncDelegate getExternalDependcesFunc)
    {
        string assetBundleName = path + file;
        string assetBundlePath = getExternalPathFunc(assetBundleName);

        string[] dependencies = getExternalDependcesFunc(assetBundleName);
        if (SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + assetBundleName))
        {
            //   Debug.Log(assetBundleName);
            SyncResourceManager.LoadObjectExternal(path, file, callBack);
            return;
        }

        if (taskList.Contains("external/" + assetBundleName))
        {
            await new WaitUntil(() => !this.taskList.Contains("external/" + assetBundleName));
        }
        taskList.Add("external/" + assetBundleName);
        if (!this.bundles.ContainsKey("external/" + assetBundleName) && !this.resourceCache.ContainsKey("external/" + assetBundleName))
        {
            foreach (string dependency in dependencies)
            {
                if (string.IsNullOrEmpty(dependency))
                {
                    continue;
                }
                if (!SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + dependency))
                {
                    if (!TestTaskList.Contains("external/" + dependency) && !this.bundles.ContainsKey("external/" + dependency))
                    {
                        await this.MyLoadOneBundleAsync("external/" + dependency, path);
                    }
                    else if (TestTaskList.Contains("external/" + dependency))
                    {
                        await new WaitUntil(() => this.bundles.ContainsKey("external/" + dependency));
                    }
                }
            }
        }
        foreach (string dependency in dependencies)
        {
            if (string.IsNullOrEmpty(dependency))
            {
                continue;
            }
            if (!SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + dependency))
            {
                await new WaitUntil(() => this.bundles.ContainsKey("external/" + dependency));
            }
        }
        method(path, file, callBack, getExternalDependcesFunc);
        taskList.Remove("external/" + assetBundleName);
    }
示例#4
0
    public async void SetExternal(string path, string file, CallBackDelegate <object, object> mCall, GetDependBundlesFuncDelegate getExternalDependcesFunc)
    {
        string assetName = path + file;

        string[] dependencies = getExternalDependcesFunc(assetName);
        if (this.mAssetsLoaderAsyncDic.ContainsKey("external/" + assetName))
        {
            Debug.Log("await");
            await new WaitUntil(() => mAssetsLoaderAsyncDic.ContainsKey("external/" + assetName) == false && this.resourceCache.ContainsKey("external/" + assetName));
        }
        if (this.resourceCache.ContainsKey("external/" + assetName))
        {
            //  Debug.Log(("external/" + assetName));
            GameObject obj = GameObject.Instantiate((GameObject)this.resourceCache["external/" + assetName]);
            this.bundles["external/" + assetName].AddRefObj(obj);
            // Debug.Log("AddRef" + "external/" + assetName + "Num" + this.bundles["external/" + assetName].RefCount);
            foreach (var v in dependencies)
            {
                if (v != assetName)
                {
                    if (!SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + v))
                    {
                        this.bundles["external/" + v].AddRefObj(obj);
                        //   Debug.Log("AddRef" + "external/" + v + "Num" + this.bundles["external/" + v].RefCount);
                    }
                }
            }
            mCall(obj, file);
            // mLua.Call(obj, file);
        }
        else
        {
            AssetsLoaderAsync assetsLoaderAsync = new AssetsLoaderAsync();
            assetsLoaderAsync.SetBundle(this.bundles["external/" + assetName].AssetBundle, "external/" + assetName);
            mAssetsLoaderAsync.Add(assetsLoaderAsync);
            mAssetsLoaderAsyncDic["external/" + assetName] = assetsLoaderAsync;
            GameObject temp = (GameObject)await assetsLoaderAsync.LoadAssetAsync(file);

            GameObject obj = GameObject.Instantiate(temp);
            this.bundles["external/" + assetName].AddRefObj(obj);
            //   Debug.Log("AddRef" + "external/" + assetName + "Num" + this.bundles["external/" + assetName].RefCount);
            foreach (var v in dependencies)
            {
                if (v != assetName)
                {
                    if (!SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + v))
                    {
                        this.bundles["external/" + v].AddRefObj(obj);
                        //    Debug.Log("AddRef" + "external/" + v + "Num" + this.bundles["external/" + v].RefCount);
                    }
                }
            }
            this.bundles["external/" + assetName].AssetBundle.Unload(false);
            this.resourceCache["external/" + assetName] = temp;
            mCall(obj, file);
            //mLua.Call(obj,file);
        }
    }