public void DownLoadResourcesAndSave(string relativePath)
        {
            string            path     = NetSystemFacade.ResourceURL + "/" + relativePath + "." + FileExtension;
            AssetBundleStream abStream = new AssetBundleStream();

            abStream.OnLoadFinish += () =>
            {
                AssetBundleWriteArgs args = new AssetBundleWriteArgs();
                args.Bytes = abStream.Bytes;
                args.Path  = path;
                abStream.WriteResource(args);
            };
            abStream.ReadResouce(path);
        }
        public AssetBundleStream LoadResourceFromAB(string resName, Action onLoadFinish = null)
        {
            AssetBundleStream abStream = new AssetBundleStream();

            abStream.OnLoadFinish += onLoadFinish;

            if (ResDict.ContainsKey(resName))
            {
                string path = NetSystemFacade.ResourceURL + "/" + resName + "." + FileExtension;
                for (int i = 0; i < ResDict[resName].Dependencys.Count; i++)
                {
                    AssetBundleStream abChildStream = LoadResourceFromAB(ResDict[resName].Dependencys[i]);
                    abChildStream.OnLoadFinish += () =>
                    {
                        bool isLoaded = true;
                        LoadedRes.Add(PathUtils.GetFileNameWithoutExtension(abChildStream.Bundle.name));
                        DebugUtils.DebugRedInfo(abChildStream.Bundle.name);
                        for (int j = 0; j < ResDict[resName].Dependencys.Count; j++)
                        {
                            if (!LoadedRes.Contains(ResDict[resName].Dependencys[j]))
                            {
                                DebugUtils.DebugRedInfo(ResDict[resName].Dependencys[j]);
                                isLoaded = false;
                            }
                        }

                        if (isLoaded)
                        {
                            abStream.ReadResouce(path);
                        }
                    };
                    string chidResName = ResDict[resName].Dependencys[i];
                    DebugUtils.DebugRedInfo(chidResName);
                    if (ResDict.ContainsKey(chidResName))
                    {
                        string childPath = NetSystemFacade.ResourceURL + "/" + chidResName + "." + FileExtension;
                        abChildStream.ReadResouce(childPath);
                    }
                }
            }

            return(abStream);
        }