123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- #if !COMBAT_SERVER
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using LitJson;
- using UnityEngine;
- namespace Utility
- {
- /// <summary>
- /// 用来做JsonUtility.FromJson的容器类
- /// </summary>
- [Serializable]
- public class AllPackedAssetsInfo
- {
- public List<AssetInfo> assetsList;
-
- // public List<BundleInfo> bundlsList;
- }
- [Serializable]
- public class AssetInfo
- {
- public string name;
- public string bundle;
- public string localPath;
- public bool isConfig;
- public LitJson.JsonData ToJson()
- {
- JsonData jsonData = new JsonData();
- jsonData["name"] = name;
- jsonData["bundle"] = bundle;
- jsonData["isConfig"] = isConfig;
- if (!string.IsNullOrEmpty(localPath))
- {
- jsonData["localPath"] = localPath;
- }
- return jsonData;
- }
- }
- [Serializable]
- public struct BundleInfo
- {
- // public string name;
- // public string MD5;
- // public long size;//byte
- //
- // public JsonData ToJson()
- // {
- // JsonData jsonData = new JsonData();
- // jsonData["name"] = name;
- // jsonData["MD5"] = MD5;
- // jsonData["size"] = size;
- // return jsonData;
- // }
- }
- public class AssetsPacker
- {
- private static char[] splits = new char[] { '/', '.' };
- public static string SpliteName(string name)
- {
- string[] splitName = name.Split(splits);
- if (splitName.Length > 2)
- {
- return splitName[splitName.Length - 2];
- }
- else
- {
- return "";
- }
- }
- // public static BundleInfo CreateBundleInfo(string name, List<string> dependence, string MD5Value)
- // {
- // BundleInfo bundle = new BundleInfo();
- // bundle.name = SpliteName(name);
- //
- // if (dependence != null)
- // {
- // dependence.ForEach(str => SpliteName(str));
- // }
- //
- // bundle.MD5 = MD5Value;
- // return bundle;
- // }
- #region Write Files
- /*
- private static XmlAttribute addXmlAttribute(XmlDocument doc, string name, string val)
- {
- XmlAttribute attr = doc.CreateAttribute(name);
- attr.Value = val;
- return attr;
- }
- private static XmlNode CreateNode(AssetInfo asset, XmlDocument doc)
- {
- XmlNode node = doc.CreateElement("AssetConfig");
- node.Attributes.Append(addXmlAttribute(doc, "AssetName", asset.name));
- node.Attributes.Append(addXmlAttribute(doc, "BundleName", asset.bundle));
- if (!string.IsNullOrEmpty(asset.localPath))
- {
- node.Attributes.Append(addXmlAttribute(doc, "AssetPath", asset.localPath));
- }
- return node;
- }
- private static XmlNode CreateNode(BundleInfo bundle, XmlDocument doc)
- {
- XmlNode node = doc.CreateElement("BundleConfig");
- node.Attributes.Append(addXmlAttribute(doc, "BundleName", bundle.name));
- node.Attributes.Append(addXmlAttribute(doc, "MD5", bundle.MD5));
- node.Attributes.Append(addXmlAttribute(doc, "Size", bundle.size.SplitToString()));
- // if (bundle.depedenceBundles != null)
- // {
- // node.Attributes.Append(addXmlAttribute(doc, "DependenceCount", bundle.depedenceBundles.Count.SplitToString()));
- // for (int i = 0; i < bundle.depedenceBundles.Count; i++)
- // {
- // node.Attributes.Append(addXmlAttribute(doc, "DependenceBundle" + i, bundle.depedenceBundles [i]));
- // }
- // }
- return node;
- }
- [ExecuteInEditMode]
- public static void WriteInfoToXMLFile(Dictionary<string, AssetInfo> assetList, Dictionary<string, BundleInfo> bundleList, string savePath)
- {
- if (null == assetList ||
- null == bundleList)
- {
- return;
- }
- XmlDocument doc = new XmlDocument();
- XmlDeclaration desc = doc.CreateXmlDeclaration("1.0", "utf-8", null);
- doc.AppendChild(desc);
- XmlElement root = doc.CreateElement("PackConfig");
- doc.AppendChild(root);
- XmlElement assetsRoot = doc.CreateElement("Assets");
- root.AppendChild(assetsRoot);
- foreach (var kvp in assetList)
- {
- XmlNode node = CreateNode(kvp.Value, doc);
- assetsRoot.AppendChild(node);
- }
- XmlElement bundlesRoot = doc.CreateElement("Bundles");
- root.AppendChild(bundlesRoot);
- foreach (var kvp in bundleList)
- {
- XmlNode node = CreateNode(kvp.Value, doc);
- bundlesRoot.AppendChild(node);
- }
- if (File.Exists(savePath))
- {
- File.Delete(savePath);
- }
- doc.Save(savePath);
- }
- */
- [ExecuteInEditMode]
- public static AllPackedAssetsInfo WriteInfoToJsonFile(Dictionary<string, AssetInfo> assetDict,
- string savePath)
- {
- AllPackedAssetsInfo allPackedInfo = new AllPackedAssetsInfo();
- allPackedInfo.assetsList = new List<AssetInfo>();
- allPackedInfo.assetsList.AddRange(assetDict.Values);
- // allPackedInfo.bundlsList = new List<BundleInfo>();
- // allPackedInfo.bundlsList.AddRange(bundleDict.Values);
- string content = JsonUtility.ToJson(allPackedInfo);
- if (File.Exists(savePath))
- {
- File.Delete(savePath);
- }
- Encoding encoding = new UTF8Encoding(false);
- File.WriteAllText(savePath, content, encoding);
- return allPackedInfo;
- // JsonData jsonRoot = new JsonData();
- // JsonData assetsRoot = new JsonData();
- // JsonData bundleRoot = new JsonData();
- // jsonRoot["Assets"] = assetsRoot;
- // jsonRoot["Bundles"] = bundleRoot;
- //
- // foreach (var kvp in assetDict)
- // {
- // assetsRoot[kvp.Value.name] = kvp.Value.ToJson();
- // }
- //
- // foreach (var kvp in bundleDict)
- // {
- // bundleRoot[kvp.Value.name] = kvp.Value.ToJson();
- // }
- //
- // if (File.Exists(savePath))
- // {
- // File.Delete(savePath);
- // }
- // Encoding encoding = new UTF8Encoding(false);
- // File.WriteAllText(savePath, jsonRoot.ToJson(), encoding);
- }
- #endregion
- }//AssetsPackInfo
- }
- #endif
|