private static void LoadProductInfo() { string persistPath = Application.persistentDataPath + "/Config/ProductCfg.txt"; if (File.Exists(persistPath)) { string info = File.ReadAllText(persistPath); ProductCfgNormal productcfgnormal = JsonUtility.FromJson <ProductCfgNormal>(info); if (productcfgnormal != null) { foreach (var p in productcfgnormal.Products) { ProductInfosDict[p.ProductID] = p; } } } else { ProductCfg productcfg = Resources.Load <ProductCfg>("Configs/ProductCfg"); if (productcfg != null) { foreach (var p in productcfg.Products) { ProductInfosDict[p.ProductID] = p; } } } }
public static ProductCfg LoadFromFile(string path) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(ProductCfg)); var text = File.ReadAllBytes(path); using (MemoryStream stream = new MemoryStream(text)) { ProductCfg obj = (ProductCfg)ser.ReadObject(stream); obj.Verify(); return(obj); } }
static void BuildAllAssetBundles() { //BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, EditorUserBuildSettings.activeBuildTarget); var productCfg = ProductCfg.LoadFromFile(System.IO.Path.Combine(UnityEngine.Application.dataPath, "product.json")); var options = BuildAssetBundleOptions.DisableWriteTypeTree | BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.DeterministicAssetBundle; var outputRootDir = System.IO.Path.Combine(UnityEngine.Application.dataPath, "../AssetBundles"); var textTempPath = System.IO.Path.Combine(UnityEngine.Application.dataPath, ProductCfg.MODULES_PATH, ProductCfg.TEXT_PATH_TEMP); var ctx = new CreateAssetBundlesContext(); ctx.outputRootDir = outputRootDir; ctx.textTEMPPath = textTempPath; ctx.options = options; ctx.target = EditorUserBuildSettings.activeBuildTarget; ctx.modulesRootPath = Path.Combine(UnityEngine.Application.dataPath, ProductCfg.MODULES_PATH); ctx.csVersion = ModuleBuilder.GetCSVersionString(); ctx.lobbyVersion = ModuleBuilder.GetLobbyVersionString(); if (Directory.Exists(outputRootDir)) { Directory.Delete(outputRootDir, true); } Cleanup(ctx); Directory.CreateDirectory(outputRootDir); ModuleBuilder.BuildProductModules(productCfg, ctx); Cleanup(ctx); AssetDatabase.Refresh(); Debug.Log("Build AssetBundles Done!"); }
public static void BuildProductModules(ProductCfg pcfg, CreateAssetBundlesContext ctx) { var abbList = new List <AssetBundleBuild>(); var modbList = new List <ModuleBuilder>(); // build Lobby foreach (var mcfg in pcfg.Modules) { var vs = GetVersionString(mcfg.Name); var mb = new ModuleBuilder(mcfg, vs, ctx); if (mb.Build(abbList)) { modbList.Add(mb); } } if (abbList.Count < 1) { Debug.Log("no bundle found in cfg file, nothing to do"); return; } AssetDatabase.Refresh(); var manifest = BuildPipeline.BuildAssetBundles(ctx.outputRootDir, abbList.ToArray(), ctx.options, ctx.target); if (manifest == null) { return; } // for each module, copy bundles to its folder, and generate cfg.json foreach (var mb in modbList) { CreateModOutputCfg(mb, ctx, manifest); } }