| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 | #if !COMBAT_SERVERusing 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
 |