/// <summary> /// カタログの同期 /// </summary> /// <param name="catalog"></param> private static void SyncCatalog(AssetBundleCatalog catalog, Dictionary <string, string> deliveryStreamingAssetPathsCatalog) { var allDeliveryStreamingAssetInfos = AssetBundleUtility.GetAllDeliveryStreamingAssetInfos(); deliveryStreamingAssetPathsCatalog.Clear(); foreach (var deliveryStreamingAssetInfo in allDeliveryStreamingAssetInfos) { deliveryStreamingAssetPathsCatalog.Add(deliveryStreamingAssetInfo.deliveryStreamingAssetNameWithVariant, deliveryStreamingAssetInfo.path); } var allAssetBundles = AssetDatabase.GetAllAssetBundleNames(); var allDeliveryStreamingAssets = allDeliveryStreamingAssetInfos.Select(x => x.deliveryStreamingAssetNameWithVariant); allAssetBundles = allAssetBundles.Concat(allDeliveryStreamingAssets).ToArray(); System.Array.Sort(allAssetBundles); var allAssetBundlesWithVariant = allAssetBundles.Where(x => 0 <= x.IndexOf('.')).ToArray(); var allDeliveryStreamingAssetsWithVariant = allDeliveryStreamingAssetInfos.Where(x => x.deliveryStreamingAssetName != x.deliveryStreamingAssetNameWithVariant) .Select(x => x.deliveryStreamingAssetNameWithVariant); allAssetBundlesWithVariant = allAssetBundlesWithVariant.Concat(allDeliveryStreamingAssetsWithVariant).ToArray(); System.Array.Sort(allAssetBundlesWithVariant); catalog.SetAllAssetBundles(allAssetBundles, allAssetBundlesWithVariant); var dependencies = new string[0]; var fileSize = 100u * 1024u; //10KiB for (int i = 0, iMax = allAssetBundles.Length; i < iMax; ++i) { catalog.SetDependencies(i, dependencies, dependencies); catalog.SetAssetBundleFileSize(i, fileSize); } }
/// <summary> /// データベースの同期 /// </summary> private void SyncDatabase() { if (m_DeliveryStreamingAssetPathsCatalog == null) { if (m_Catalog == null) { m_Catalog = ScriptableObject.CreateInstance <AssetBundleCatalog>(); } m_DeliveryStreamingAssetPathsCatalog = new Dictionary <string, string>(); SyncCatalog(m_Catalog, m_DeliveryStreamingAssetPathsCatalog); CatalogPostprocess(m_Catalog); } }
/// <summary> /// カタログポストプロセス /// </summary> /// <param name="catalog">カタログ</param> private static void CatalogPostprocess(AssetBundleCatalog catalog) { var assetBundleShoshaEditorAssembly = System.AppDomain.CurrentDomain .GetAssemblies() .Where(x => x.FullName.StartsWith("AssetBundleShosha.Editor,")) .FirstOrDefault(); if (assetBundleShoshaEditorAssembly == null) { return; } var assetBundleBuilderType = assetBundleShoshaEditorAssembly.GetType("AssetBundleShosha.Editor.AssetBundleBuilder"); if (assetBundleBuilderType == null) { return; } var catalogPostprocessBindingFlags = BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly; var assetBundleBuilderCatalogPostprocess = assetBundleBuilderType.GetMethod("CatalogPostprocess", catalogPostprocessBindingFlags); assetBundleBuilderCatalogPostprocess.Invoke(null, new[] { catalog }); }
/// <summary> /// 暗号化ハッシュ取得 /// </summary> /// <param name="catalog">カタログ</param> /// <param name="assetBundleNameWithVariant">バリアント付きアセットバンドル名</param> /// <returns>暗号化ハッシュ</returns> public static int GetCryptoHash(AssetBundleCatalog catalog, string assetBundleNameWithVariant) { var result = catalog.GetAssetBundleCryptoHash(assetBundleNameWithVariant); return(result); }
/// <summary> /// 暗号化確認 /// </summary> /// <param name="catalog">カタログ</param> /// <param name="assetBundleNameWithVariant">バリアント付きアセットバンドル名</param> /// <returns>true:暗号化, false:平文</returns> public static bool IsCrypto(AssetBundleCatalog catalog, string assetBundleNameWithVariant) { var hash = GetCryptoHash(catalog, assetBundleNameWithVariant); return(0 != hash); }