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