예제 #1
0
        /// <summary>
        /// アセットバンドルのハッシュ
        /// </summary>
        private Hash128 CalcBundleHash(IBundleFileManifest data)
        {
            // 持ってるアセット
            var assets = data.Assets;

            // assetのhash一覧
            var hashList = new List <Hash128>(assets.Length);

            foreach (var asset in assets)
            {
                var hash = AssetDatabase.GetAssetDependencyHash(asset);
                hashList.Add(hash);
            }
            // 結合して1個のhashにする
            var hashBytes = hashList.CombineHashBytes();

            return(FsUtillity.ComputeHash(hashBytes));
        }
예제 #2
0
        /// <summary>
        /// 単一データ作成
        /// </summary>
        private BundleBuildData CreateBuildData(IAccessLocation file, IBundleFileManifest buildFileData, IReadOnlyDictionary <string, string> table, AssetBundleManifest manifest)
        {
            var identifier   = buildFileData?.Identifier;
            var abName       = buildFileData?.ABName;
            var crc          = FsUtillity.TryGetCrc(file.FullPath);
            var hash         = manifest.TryGetHashString(abName);
            var dependencies = manifest.TryGetDependencies(abName).Select(c => table[c]).ToArray();
            var size         = FsUtillity.TryGetFileSize(file.FullPath);

            var d = new BundleBuildData
            {
                Path         = abName,
                Identifier   = identifier,
                Assets       = buildFileData?.Address,
                Hash         = hash,
                Crc          = crc,
                Dependencies = dependencies,
                FileSize     = size,
                Labels       = buildFileData?.Labels,
            };

            return(d);
        }
예제 #3
0
 /// <summary>
 /// パスハッシュ?
 /// こっち先にやらないと名前をhashで上書きしてるので変換が合わないと思う
 /// </summary>
 private Hash128 CalcPathHash(IBundleFileManifest data)
 {
     return(FsUtillity.CalcStrHash(data.ABName));
 }