private static void GenerateUI(string configPath, string spriteFolderPath, Canvas canvas)
        {
            CsvTable table = null;

            pos_readdoc : if (File.Exists(configPath))
            {
                try
                {
                    table = CsvHelper.ReadCSV(configPath, System.Text.Encoding.GetEncoding("GB2312"));
                }
                catch (Exception e)
                {
                    var reopen = EditorUtility.DisplayDialog("提示", e.Message, "重试", "取消");
                    if (reopen)
                    {
                        goto pos_readdoc;
                    }
                }

                if (table != null)
                {
                    var canLoad = table.IsUIInfoTable(false);
                    if (canLoad)
                    {
                        var isTitleMatch = table.IsUIInfoTable(true);
                        if (!isTitleMatch)
                        {
                            var forceLoad = Notice("文档标题不匹配:" + string.Join(",", UIInfo_TableExtend.uiInfoHead) + "\n继续请按确认!", true);
                            if (!forceLoad)
                            {
                                return;
                            }
                        }

                        var uiInfo = table.LoadUIInfo();
                        if (uiInfo != null)
                        {
                            if (emptyImporter != null)
                            {
                                Assembler.emptyImporter = emptyImporter;
                            }
                            Assembler.GenerateUI(spriteFolderPath, canvas, layerImportTypes, uiInfo);
                        }
                    }
                    else
                    {
                        Notice("配制文档不可用,请核对后重试!");
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public static UIInfo LoadUIInfo(this CsvTable table)
        {
            if (table.IsUIInfoTable(false))
            {
                var uiInfo = new UIInfo(table.name);

                if (table.Rows != null && table.Columns != null)
                {
                    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        var layerInfo = new LayerInfo();
                        layerInfo.name = table[0, i];
                        layerInfo.path = table[1, i];
                        layerInfo.type = table[2, i];
                        layerInfo.rect = ParamAnalysisTool.StringToRect(table[3, i]);
                        var resourceDic = ParamAnalysisTool.ToDictionary(table[4, i]);
                        if (resourceDic != null)
                        {
                            ChargeDic(layerInfo.resourceDic, resourceDic);
                        }


                        if (table.Columns.Count > 5)
                        {
                            List <ResourceDic> sub_images;
                            List <ResourceDic> sub_texts;
                            List <ResourceDic> sub_rawImages;
                            var subResourceDic = ParamAnalysisTool.ToDictionary_Sub(table[5, i], out sub_images, out sub_texts, out sub_rawImages);
                            if (subResourceDic != null)
                            {
                                ChargeDic(layerInfo.subResourceDic, subResourceDic);
                            }
                            ChargeList(layerInfo.sub_images, sub_images);
                            ChargeList(layerInfo.sub_texts, sub_texts);
                            ChargeList(layerInfo.sub_rawImages, sub_rawImages);
                        }

                        uiInfo.layers.Add(layerInfo);
                    }
                }

                return(uiInfo);
            }
            return(null);
        }
Ejemplo n.º 3
0
        public static CsvTable UIInfoToTable(this UIInfo info)
        {
            var table = new CsvTable(info.name);

            table.Columns = new List <string>(uiInfoHead);
            for (int i = 0; i < info.layers.Count; i++)
            {
                var layer = info.layers[i];
                var raw   = new string[table.Columns.Count];
                raw[0] = layer.name;
                raw[1] = layer.path;
                raw[2] = layer.type;
                raw[3] = ParamAnalysisTool.RectToString(layer.rect);
                raw[4] = ParamAnalysisTool.FromDictionary(layer.resourceDic);
                raw[5] = ParamAnalysisTool.FromDictionarySub(layer.subResourceDic, layer.sub_images, layer.sub_texts, layer.sub_rawImages);
                table.Rows.Add(raw);
            }
            return(table);
        }
Ejemplo n.º 4
0
        public static bool IsUIInfoTable(this CsvTable table, bool compireHead = true)
        {
            if (table == null || table.Columns == null || table.Columns.Count > uiInfoHead.Length)
            {
                return(false);
            }

            if (compireHead)
            {
                for (int i = 0; i < uiInfoHead.Length; i++)
                {
                    if (table.Columns.Count > i && uiInfoHead[i] != table.Columns[i])
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 将DataTable中数据写入到CSV文件中
        /// </summary>
        /// <param name="dt">提供保存数据的DataTable</param>
        /// <param name="fileName">CSV的文件路径</param>
        public static void SaveCSV(CsvTable dt, string fullPath, System.Text.Encoding encoding)
        {
            FileInfo fi = new FileInfo(fullPath);

            if (!fi.Directory.Exists)
            {
                fi.Directory.Create();
            }
            FileStream   fs   = new FileStream(fullPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
            StreamWriter sw   = new StreamWriter(fs, encoding);
            string       data = "";

            //写出列名称
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                data += "\"" + dt.Columns[i] + "\"";
                if (i < dt.Columns.Count - 1)
                {
                    data += ",";
                }
            }
            sw.WriteLine(data);
            //写出各行数据
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                data = "";
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    string str = dt.Rows[i][j].ToString();
                    str   = string.Format("\"{0}\"", str);
                    data += str;
                    if (j < dt.Columns.Count - 1)
                    {
                        data += ",";
                    }
                }
                sw.WriteLine(data);
            }
            sw.Close();
            fs.Close();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 读取CSV文件到DataTable中
        /// </summary>
        /// <param name="filePath">CSV的文件路径</param>
        /// <returns></returns>
        public static CsvTable ReadCSV(string filePath, System.Text.Encoding encoding)
        {
            CsvTable dt         = new CsvTable(System.IO.Path.GetFileNameWithoutExtension(filePath));
            var      fileInfo   = new FileInfo(filePath);
            var      fileStream = fileInfo.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
            int      lineNumber = 0;

            using (CsvFileReader reader = new CsvFileReader(fileStream, encoding))
            {
                var row = new List <string>();

                while (reader.ReadRow(row))
                {
                    if (0 == lineNumber)
                    {
                        foreach (string s in row)
                        {
                            dt.Columns.Add(s.Replace("\"", ""));
                        }
                    }
                    else
                    {
                        int      index = 0;
                        string[] dr    = CsvTable.NewRow(row.Count);
                        foreach (string s in row)
                        {
                            dr[index] = s.Replace("\"", "");
                            index++;
                        }
                        dt.Rows.Add(dr);
                    }
                    lineNumber++;
                }
            }
            fileStream.Dispose();
            fileStream.Close();
            return(dt);
        }
        public static void LoadFromCsvTable(this TextureInfoTable infoTable, CsvTable table)
        {
            var columsCount = table.Columns.Count;

            if (columsCount >= 3)
            {
                if (table.Rows != null && table.Columns != null)
                {
                    if (infoTable.textureInfos == null)
                    {
                        infoTable.textureInfos = new List <TextureInfo>();
                    }
                    else
                    {
                        infoTable.textureInfos.Clear();
                    }

                    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        var textureInfo = new TextureInfo();
                        textureInfo.texturePath = table[0, i];
                        textureInfo.type        = (TextureImporterType)System.Enum.Parse(typeof(TextureImporterType), table[1, i]);
                        textureInfo.resourceDic = ParamAnalysisTool.ToDictionary(table[2, i]);

                        if (columsCount > 3)
                        {
                            textureInfo.spritesheetList = ParamAnalysisTool.ToDictionaryArray(table[3, i]);
                        }

                        infoTable.textureInfos.Add(textureInfo);
                    }
                }
            }
            else
            {
                Debug.LogError("csv文档参数不足3个,请检查");
            }
        }