Пример #1
0
    /// <summary>
    /// 加载本地版本配置文件
    /// </summary>
    public void LoadVersionConfig()
    {
        CommonLog.Log(MAuthor.ZX, "Load VersionConfig");
        string localVersionPath = UnityFileLoaderHelper.StreamingAssetsPath + "/version.xml";

        if (GameAssetManager.USED_AB_MODE)
        {
            localVersionPath = "version.xml";
        }
        var xmlStr = UnityFileLoaderHelper.ReadFileAllText(localVersionPath);

        versionData = xmlStr.FromXML <VersionData>();
    }
Пример #2
0
    protected override void InstanceInit()
    {
        base.InstanceInit();
#if !AB_MODE && !UNITY_EDITOR
        CommonLog.Log($"目前处于非AB模式");
#endif
        if (!IsInit)
        {
/*#if UNITY_EDITOR
 *          USED_AB_MODE = UnityEngine.PlayerPrefs.GetInt("AB_MODE", 0) == 1;
 #else*/
            USED_AB_MODE = true;
//#endif
            //GameObjectPool.InitPool();
            UnityFileLoaderHelper.InitForMainThread();
            UnityFileLoaderHelper.USED_AB_MODE = USED_AB_MODE;
            IsInit = true;
        }
    }
Пример #3
0
        /// <summary>
        /// 得到被映射后的文件名称,文件不存在返回空
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="pos"></param>
        /// <returns></returns>
        public string GetMappedFilePath(string fileName, out eFileMapperLoaderPosType pos)
        {
            pos = eFileMapperLoaderPosType.None;
            var info = GetFileInfo(fileName);

            if (info != null)
            {
                UnityFileLoaderHelper.eFileLoaderPosType filePos;
                var has = UnityFileLoaderHelper.IsFileExist(Dir, info.GetMappedFileName(), out filePos);
                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.PersistAsset)
                {
                    pos = eFileMapperLoaderPosType.MapperAsset_PersistAsset;
                    return(UnityPersistFileHelper.GetPersistAssetFilePath(Dir, info.GetMappedFileName()));
                }

                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.StreamAsset)
                {
                    pos = eFileMapperLoaderPosType.MapperAsset_StreamAsset;
                    return(UnityStreamingFileHelper.GetStreamAssetFilePath(Dir, info.GetMappedFileName()));
                }

                return(string.Empty);
            }
            else
            {
                UnityFileLoaderHelper.eFileLoaderPosType filePos;
                var has = UnityFileLoaderHelper.IsFileExist(Dir, fileName, out filePos);
                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.PersistAsset)
                {
                    pos = eFileMapperLoaderPosType.PersistAsset;
                    return(UnityPersistFileHelper.GetPersistAssetFilePath(Dir, fileName));
                }

                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.StreamAsset)
                {
                    pos = eFileMapperLoaderPosType.StreamAsset;
                    return(UnityStreamingFileHelper.GetStreamAssetFilePath(Dir, fileName));
                }

                return(string.Empty);
            }
        }
Пример #4
0
        /// <summary>
        /// 根据文件夹和文件名称,自动判断Mapper或者在Stream任意位置,总之读取到你想要的Bundle
        /// </summary>
        public AssetBundleCreateRequest LoadBundleFromFileAsync(string fileName, out eFileMapperLoaderPosType pos,
                                                                uint crc = 0U)
        {
            pos = eFileMapperLoaderPosType.None;
            var info = GetFileInfo(fileName);

            if (info != null)
            {
                UnityFileLoaderHelper.eFileLoaderPosType filePos;
                var asb = UnityFileLoaderHelper.ReadAssetBundleAsync(Dir, info.GetMappedFileName(), (ulong)info.Offset,
                                                                     out filePos, crc);
                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.PersistAsset)
                {
                    pos = eFileMapperLoaderPosType.MapperAsset_PersistAsset;
                }

                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.StreamAsset)
                {
                    pos = eFileMapperLoaderPosType.MapperAsset_StreamAsset;
                }

                return(asb);
            }
            else
            {
                UnityFileLoaderHelper.eFileLoaderPosType filePos;
                var asb = UnityFileLoaderHelper.ReadAssetBundleAsync(Dir, fileName, 0, out filePos, crc);
                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.PersistAsset)
                {
                    pos = eFileMapperLoaderPosType.PersistAsset;
                }

                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.StreamAsset)
                {
                    pos = eFileMapperLoaderPosType.StreamAsset;
                }

                return(asb);
            }
        }
Пример #5
0
        /// <summary>
        /// 根据文件夹和文件名称,自动判断Mapper或者在Stream任意位置,总之读取到你想要的文件
        /// 文件读取顺序,Mapper Persist,Mapper Stream,源文件Persist,源文件Stream
        /// </summary>
        public byte[] GetFileBytes(string fileName, out eFileMapperLoaderPosType pos)
        {
            pos = eFileMapperLoaderPosType.None;
            var info = GetFileInfo(fileName);

            if (info != null)
            {
                UnityFileLoaderHelper.eFileLoaderPosType filePos;
                var bs = UnityFileLoaderHelper.ReadFileAllBytes(Dir, info.GetMappedFileName(), info.Offset, info.Len,
                                                                out filePos);
                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.PersistAsset)
                {
                    pos = eFileMapperLoaderPosType.MapperAsset_PersistAsset;
                }

                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.StreamAsset)
                {
                    pos = eFileMapperLoaderPosType.MapperAsset_StreamAsset;
                }

                return(bs);
            }
            else
            {
                UnityFileLoaderHelper.eFileLoaderPosType filePos;
                var bs = UnityFileLoaderHelper.ReadFileAllBytes(Dir, fileName, out filePos);
                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.PersistAsset)
                {
                    pos = eFileMapperLoaderPosType.PersistAsset;
                }

                if (filePos == UnityFileLoaderHelper.eFileLoaderPosType.StreamAsset)
                {
                    pos = eFileMapperLoaderPosType.StreamAsset;
                }

                return(bs);
            }
        }
Пример #6
0
        public static FileMapSystemTagFindResultHelper FindInfos(FileMapSystem sys, int[] tags)
        {
            var res = new FileMapSystemTagFindResultHelper();

            res.SearchTags = tags;
            var dictDowned = new Dictionary <string, int>();
            var dictMiss   = new Dictionary <string, int>();

            foreach (var info in sys.FileInfo.AllFileMapInfo)
            {
                if (res.ContainsTag(info.FileTag))
                {
                    res.AllInfos.Add(info);
                    var mappedName = info.GetMappedFileName();
                    UnityFileLoaderHelper.eFileLoaderPosType pos;
                    if (UnityFileLoaderHelper.IsFileExist(sys.Dir, mappedName, out pos))
                    {
                        if (!dictDowned.ContainsKey(mappedName))
                        {
                            dictDowned[mappedName] = info.Len;
                        }
                        else
                        {
                            dictDowned[mappedName] = dictDowned[mappedName] + info.Len;
                        }
                    }
                    else
                    {
                        if (!dictMiss.ContainsKey(mappedName))
                        {
                            dictMiss[mappedName] = info.Len;
                        }
                        else
                        {
                            dictMiss[mappedName] = dictMiss[mappedName] + info.Len;
                        }
                    }
                }
            }

            foreach (var info in dictDowned)
            {
                var wd = new WWWFileDownloader.DownloadFileInfo()
                {
                    FileName = info.Key,
                    FileSize = info.Value
                };
                res.Downloaded.Add(wd);
                res.DownloadedSize += info.Value;
            }

            foreach (var info in dictMiss)
            {
                var wd = new WWWFileDownloader.DownloadFileInfo()
                {
                    FileName = info.Key,
                    FileSize = info.Value
                };
                res.Missed.Add(wd);
                res.MissedSize += info.Value;
            }

            return(res);
        }