public static void Init() { VersionObj version = Resources.Load <VersionObj>("RawConfig/Version"); if (version == null) { DebugConsole.LogError("Can't Load Version Object!"); open = false; return; } open = version.Open_Version; if (open) { Main_Version_Number = version.Main_Version_Number; DebugConsole.Log("程序主版本号为:" + Main_Version_Number, DebugConsole.Color.blue); DebugConsole.Log("本地主版本号为:" + GetLocalMainVersionNum(), DebugConsole.Color.blue); Asset_Version_Number = version.Asset_Version_Number; DebugConsole.Log("程序资源版本号为:" + Asset_Version_Number, DebugConsole.Color.blue); DebugConsole.Log("本地资源版本号为:" + GetLocalAssetVersionNum(), DebugConsole.Color.blue); } else { DebugConsole.Log("未开启程序版本号控制"); } }
//计算Bundle md5值 static void CalculateBundleIdentify(string assetbudleBuildPath) { long totalFileLength = 0; StreamWriter sw = new StreamWriter(File.Open(assetbudleBuildPath + "/" + PUBLIC_PATH_DEFINE.BundlesIdentityListName, FileMode.CreateNew)); string version = "-1"; //设置资源版本号 VersionObj obj = AssetDatabase.LoadAssetAtPath <VersionObj>("Assets/Resources/RawConfig/Version.asset"); if (obj != null && obj.Open_Version) { version = obj.Asset_Version_Number; } //创建并保存成Xml XmlDocument xml = new XmlDocument(); XmlElement root = xml.CreateElement("BundleIdentity"); root.SetAttribute("version", version); string[] files = Directory.GetFiles(assetbudleBuildPath); foreach (var file in files) { if (!file.Contains(".meta") && !file.Contains(".manifest") && !file.Contains("BundlesIdentityList") /*不计算自身*/) { string md5 = ""; FileStream fs = File.Open(file, FileMode.Open); long fileLength = fs.Length; totalFileLength += fileLength; //计算文件总长度 using (fs) { md5 = CalculateFileMD5(fs); //计算md5值 } string fileName = Path.GetFileName(file); //sw.WriteLine(fileName + ":" + md5); XmlElement id = xml.CreateElement(fileName); id.InnerText = md5; id.SetAttribute("Length", fileLength.ToString());//记录单个文件长度 DebugConsole.Log("已计算AssetBundle(" + fileName + ")长度为" + ((float)fileLength / 1024) + "KB,\r\nMD5 = " + md5); root.AppendChild(id); } } root.SetAttribute("TotalLength", totalFileLength.ToString()); DebugConsole.Log("已计算AssetBundle资源总长度为" + ((float)totalFileLength / 1024) + "KB"); xml.AppendChild(root); xml.Save(sw); sw.Flush(); sw.Dispose(); }
/// <summary> /// 获取版本号文件 /// </summary> /// <returns></returns> public static VersionObj GetVersionObj() { VersionObj obj = AssetDatabase.LoadAssetAtPath <VersionObj>(rawConfigPath + "Version.asset"); if (obj == null) { obj = ScriptableObject.CreateInstance <VersionObj>(); if (!Directory.Exists(rawConfigPath)) { Directory.CreateDirectory(rawConfigPath); } AssetDatabase.CreateAsset(obj, rawConfigPath + "Version.asset"); AssetDatabase.Refresh(); } return(obj); }
private void OnGUI() { #region 场景设置 GUILayout.Space(10); GUILayout.BeginVertical(); GUILayout.Label("设置打包场景:", "capsulebutton"); GUILayout.Space(10); int enableIndex = 0; for (int i = 0; i < scenes.Length; i++) { int curIndex = i; //保存当前索引 GUILayout.BeginHorizontal(); scenes[i].enabled = GUILayout.Toggle(scenes[i].enabled, ""); GUILayout.Label(scenes[i].path, (GUIStyle)"sv_label_2"); GUILayout.FlexibleSpace(); if (scenes[i].enabled) { if (GUILayout.Button("", (GUIStyle)"Grad Up Swatch")) { SwitchBuildSceneOrder(curIndex, curIndex - 1); } //scene id GUILayout.Label(enableIndex.ToString()); enableIndex++; if (GUILayout.Button("", (GUIStyle)"Grad Down Swatch")) { SwitchBuildSceneOrder(curIndex, curIndex + 1); } } GUILayout.EndHorizontal(); } //GUILayout.Space(10); //GUILayout.Label("", "capsulebutton"); GUILayout.EndVertical(); #endregion #region 版本号设置 VersionObj version = BuildTool.GetVersionObj(); GUILayout.Space(10); GUILayout.BeginVertical(); GUILayout.Label("版本号设置:", "capsulebutton"); GUILayout.Space(10); version.Open_Version = GUILayout.Toggle(version.Open_Version, "开启版本号控制:"); if (version.Open_Version) { GUILayout.BeginHorizontal(); GUILayout.Label("主版本号", (GUIStyle)"ChannelStripAttenuationBar"); GUILayout.FlexibleSpace(); version.Main_Version_Number = GUILayout.TextField(version.Main_Version_Number); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("资源版本号", (GUIStyle)"ChannelStripAttenuationBar"); GUILayout.FlexibleSpace(); version.Asset_Version_Number = GUILayout.TextField(version.Asset_Version_Number); GUILayout.EndHorizontal(); } GUILayout.Space(10); GUILayout.Label("", "capsulebutton"); GUILayout.EndVertical(); #endregion GUILayout.Space(10); if (GUILayout.Button("打包项目")) { SaveBuildScenes(); BuildTool.BuildPackage(); this.Close(); } if (GUILayout.Button("关闭窗口")) { this.Close(); } }