From a98e20a9c239bf2852199059f3c770040f1cd017 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=93=AE?= <834207172@qq.com> Date: Mon, 21 Apr 2025 11:11:02 +0800 Subject: [PATCH] =?UTF-8?q?05=20table=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/ConvertedExslDataMessage.cs | 157 ++++++++++++------ .../RunTime/Base/AudioTableData.cs | 18 +- .../RunTime/Base/VideoTableData.cs | 33 ++++ .../RunTime/Base/VideoTableData.cs.meta | 3 + Assets/05.TableTextConversion/package.json | 2 +- 5 files changed, 155 insertions(+), 58 deletions(-) create mode 100644 Assets/05.TableTextConversion/RunTime/Base/VideoTableData.cs create mode 100644 Assets/05.TableTextConversion/RunTime/Base/VideoTableData.cs.meta diff --git a/Assets/05.TableTextConversion/Editor/ConvertedExslDataMessage.cs b/Assets/05.TableTextConversion/Editor/ConvertedExslDataMessage.cs index 1396f9a..ac123dd 100644 --- a/Assets/05.TableTextConversion/Editor/ConvertedExslDataMessage.cs +++ b/Assets/05.TableTextConversion/Editor/ConvertedExslDataMessage.cs @@ -22,7 +22,7 @@ namespace Stary.Evo.TableTextConversion // 生成配置文件的位置 private static string Assetpath; - + // 转化表的名称 private static string newDataName; @@ -77,68 +77,115 @@ namespace Stary.Evo.TableTextConversion Debug.LogError("UnityEvo:生成配置文件的位置不存在"); return; } + FileStream stream = File.Open(DocFolderPath, FileMode.Open, FileAccess.Read); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //获取结果 DataSet result = excelReader.AsDataSet(); - - int oneRows = result.Tables[0].Rows.Count; //行数 - - Dictionary dict_Question = new Dictionary(); - Dictionary dict_Menu = new Dictionary(); - - #endregion - - #region 通过遍历一遍表格所有行的第一列【序号】不为空 - - int VoiceCount = 0; - for (int i = 0; i < oneRows; i++) + if (result.Tables.Count > 0) { - string key = FilterTo(result.Tables[0].Rows[i][0].ToString()); - if (!string.IsNullOrEmpty(key)) + for (int i = 0; i < result.Tables.Count; i++) { - VoiceCount++; + //开始遍历说有table表 + int oneRows = result.Tables[i].Rows.Count; //行数 + Dictionary dict_Question = new Dictionary(); + Dictionary dict_Menu = new Dictionary(); + + #region 通过遍历一遍表格所有行的第一列【序号】不为空 + + int VoiceCount = 0; + for (int j = 0; j < oneRows; j++) + { + string key = FilterTo(result.Tables[i].Rows[j][0].ToString()); + if (!string.IsNullOrEmpty(key)) + { + VoiceCount++; + } + } + + #endregion + + #region AudioTableData + + if (result.Tables[i].TableName == "audio") + { + #region 遍历表格相应的数据转换成数据 + + List messageInfos = new List(); + for (int j = 1; j < VoiceCount; j++) + { + AudioTableData.MessageInfo messageInfo = new AudioTableData.MessageInfo(); + //获取对话块 + messageInfo.index = j - 1; + //文件名称 + messageInfo.auId = FilterTo(result.Tables[i].Rows[j][0].ToString()); + //获取内容 + messageInfo.fileName = FilterTo(result.Tables[i].Rows[j][1].ToString()); + + //获取描述 + messageInfo.auType = Enum.TryParse(FilterTo(result.Tables[i].Rows[j][2].ToString()), out AudioTableData.AudioType auType)? auType : AudioTableData.AudioType.Null; + + messageInfo.lineId = int.TryParse(FilterTo(result.Tables[i].Rows[j][3].ToString()), out int line) ? line : 0; + + messageInfo.startTime = float.TryParse(FilterTo(result.Tables[i].Rows[j][4].ToString()), out float start) ? start : 0; + messageInfo.endTime = float.TryParse(FilterTo(result.Tables[i].Rows[j][5].ToString()), out float end) ? end : 0; + messageInfo.text = FilterTo(result.Tables[i].Rows[j][6].ToString()); + //添加数据 + messageInfos.Add(messageInfo); + } + + #endregion + + ScriptObjectSave("AudioTableData", (data) => + { + data.infos = new List(); + data.infos = messageInfos; + }); + } + + #endregion + #region AudioTableData + + if (result.Tables[i].TableName == "video") + { + #region 遍历表格相应的数据转换成数据 + + List messageInfos = new List(); + for (int j = 1; j < VoiceCount; j++) + { + VideoTableData.MessageInfo messageInfo = new VideoTableData.MessageInfo(); + //获取对话块 + messageInfo.index = j - 1; + //文件名称 + messageInfo.vId = FilterTo(result.Tables[i].Rows[j][0].ToString()); + //获取内容 + messageInfo.fileName = FilterTo(result.Tables[i].Rows[j][1].ToString()); + + //获取描述 + messageInfo.vType = FilterTo(result.Tables[i].Rows[j][2].ToString()); + + messageInfo.location = FilterTo(result.Tables[i].Rows[j][3].ToString()); + + messageInfo.time = float.TryParse(FilterTo(result.Tables[i].Rows[j][4].ToString()), out float start) ? start : 0; + messageInfo.subtitle = FilterTo(result.Tables[i].Rows[j][5].ToString()).Equals("是")? true : false; + messageInfo.remark = FilterTo(result.Tables[i].Rows[j][6].ToString()); + //添加数据 + messageInfos.Add(messageInfo); + } + + #endregion + + ScriptObjectSave("VideoTableData", (data) => + { + data.infos = new List(); + data.infos = messageInfos; + }); + } + + #endregion + #endregion } } - - #endregion - - // 条件判断 - /*if (newDataName == null) - { - return; - } - else if(newDataName == "") - { - - }*/ - #region AudioTableData - - #region 遍历表格相应的数据转换成数据 - - List messageInfos = new List(); - for (int i = 1; i < VoiceCount; i++) - { - AudioTableData.MessageInfo messageInfo = new AudioTableData.MessageInfo(); - //获取对话块 - messageInfo.index = i - 1; - //文件名称 - messageInfo.name = FilterTo(result.Tables[0].Rows[i][0].ToString()); - //获取内容 - messageInfo.nameMessage = FilterTo(result.Tables[0].Rows[i][1].ToString()); - //添加数据 - messageInfos.Add(messageInfo); - } - - #endregion - - ScriptObjectSave("AudioTableData", (data) => - { - data.infos = new List(); - data.infos = messageInfos; - }); - - #endregion } /// diff --git a/Assets/05.TableTextConversion/RunTime/Base/AudioTableData.cs b/Assets/05.TableTextConversion/RunTime/Base/AudioTableData.cs index 7c47062..3350179 100644 --- a/Assets/05.TableTextConversion/RunTime/Base/AudioTableData.cs +++ b/Assets/05.TableTextConversion/RunTime/Base/AudioTableData.cs @@ -17,9 +17,23 @@ namespace Stary.Evo.TableTextConversion // 序号 [GUIColor(0, 1, 0)] public int index; // 名称 - public string name; + public string auId; // 名称描述 - public string nameMessage; + public string fileName; + public AudioType auType; + public int lineId; + public float startTime; + public float endTime; + public string text; } + + public enum AudioType + { + Null, + music, + effect, + sound, + } + } } \ No newline at end of file diff --git a/Assets/05.TableTextConversion/RunTime/Base/VideoTableData.cs b/Assets/05.TableTextConversion/RunTime/Base/VideoTableData.cs new file mode 100644 index 0000000..2ad2ed1 --- /dev/null +++ b/Assets/05.TableTextConversion/RunTime/Base/VideoTableData.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Sirenix.OdinInspector; +using UnityEngine; + +namespace Stary.Evo.TableTextConversion +{ + public class VideoTableData : ScriptableObject, ITableData + { + public string TableName { get; } + public List infos; + + [Serializable] + public class MessageInfo + { + // 序号 + [GUIColor(0, 1, 0)] public int index; + // 名称 + public string vId; + // 名称描述 + public string fileName; + public string vType; + public string location; + public float time; + public bool subtitle; + public string remark; + } + + + + } +} \ No newline at end of file diff --git a/Assets/05.TableTextConversion/RunTime/Base/VideoTableData.cs.meta b/Assets/05.TableTextConversion/RunTime/Base/VideoTableData.cs.meta new file mode 100644 index 0000000..7f88d91 --- /dev/null +++ b/Assets/05.TableTextConversion/RunTime/Base/VideoTableData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e14b39e2bfdb4587b6d8a7a49fe4d11e +timeCreated: 1745201406 \ No newline at end of file diff --git a/Assets/05.TableTextConversion/package.json b/Assets/05.TableTextConversion/package.json index f6f963b..49bbaf3 100644 --- a/Assets/05.TableTextConversion/package.json +++ b/Assets/05.TableTextConversion/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.tabletextconversion", - "version": "1.0.4", + "version": "1.0.5", "displayName": "05.TableTextConversion", "description": "表格转化工具", "unity": "2021.3",