Exemple #1
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);
            }
        }
Exemple #2
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);
            }
        }
Exemple #3
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);
            }
        }