diff --git a/.gitignore b/.gitignore
index 29742cc..eb6e5d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -84,4 +84,12 @@ crashlytics-build.properties
/Assets/RawResources
-/.vscode
\ No newline at end of file
+/.vscode
+
+# Excel temporary lock files
+~$*.xls
+~$*.xlsx
+~$*.xlsm
+~$*.xlsb
+
+/数据表/__pycache__
\ No newline at end of file
diff --git a/Assets/GameMain/DataTables/Dialog.txt b/Assets/GameMain/DataTables/Dialog.txt
new file mode 100644
index 0000000..a3e4690
--- /dev/null
+++ b/Assets/GameMain/DataTables/Dialog.txt
@@ -0,0 +1,7 @@
+# 对话标识表 筛选用数据
+# Id Title UIMode ChapterId
+# int string DialogUIMode int
+# 对话编号 策划备注 对话标识 对话形式 章节编号
+ 1001 第一章介绍 Chapter1_Intro Mask 1.001
+ 1002 第一章主流程 Chapter1_Main BottomBox 1.002
+ 1003 第一章玩法开始前闲聊 Chapter1_SmallTalk1 BubbleBox 1.003
diff --git a/Assets/GameMain/DataTables/Dialog.txt.meta b/Assets/GameMain/DataTables/Dialog.txt.meta
new file mode 100644
index 0000000..435ba4a
--- /dev/null
+++ b/Assets/GameMain/DataTables/Dialog.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 788b17ff3aef4cd4fb6c808826c875e5
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/DataTables/DialogLine.txt b/Assets/GameMain/DataTables/DialogLine.txt
new file mode 100644
index 0000000..49a55c7
--- /dev/null
+++ b/Assets/GameMain/DataTables/DialogLine.txt
@@ -0,0 +1,13 @@
+# 对话内容表 筛选用数据
+# Id SpeakerId Expression SpeakerName Direction Text Emphasis ChapterId DialogId
+# int int ExpressionType string int string EmphasisType int int
+# 对话行编号 策划备注 说话人Id 表情 显示人名 说话朝向 说话内容 演出效果 章节Id 对话Id
+ 100100001 Id规则为 Null Null Null 0 相传。 1.00100001 1001.00001
+ 100100002 第1位数为章节Id Null Null Null 0 Mask。 1.00100002 1001.00002
+ 100100003 第2-4位数为对话Id Null Null Null 0 很好。 1.00100003 1001.00003
+ 100200001 第5-9位数为对话行Id Xu Normal 徐晟壹 0 你好,王。 1.00200001 1002.00001
+ 100200002 Wang Normal 王可嘉 1 你好,徐。 1.00200002 1002.00002
+ 100200003 Master Normal 李诫 1 你们好。 1.00200003 1002.00003
+ 100300001 Npc1 Null Null 0 这人谁啊? 1.00300001 1003.00001
+ 100300002 Npc2 Null Null 0 不知道啊? 1.00300002 1003.00002
+ 100300003 Npc1 Null Null 0 不知道你在这干嘛。 1.00300003 1003.00003
diff --git a/Assets/GameMain/DataTables/DialogLine.txt.meta b/Assets/GameMain/DataTables/DialogLine.txt.meta
new file mode 100644
index 0000000..316dc2f
--- /dev/null
+++ b/Assets/GameMain/DataTables/DialogLine.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 378604b840f56ae49831978cf0e0a6ea
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/DataTables/Scene.txt b/Assets/GameMain/DataTables/Scene.txt
index 29826e2..6aecfae 100644
--- a/Assets/GameMain/DataTables/Scene.txt
+++ b/Assets/GameMain/DataTables/Scene.txt
@@ -5,4 +5,3 @@
1 菜单场景 Menu 1
2 战斗场景 Main 2
3 压力测试场景 StressTest 0
- 4 玩法A测试场景 GameplayA 0
\ No newline at end of file
diff --git a/Assets/GameMain/DataTables/UIForm.txt b/Assets/GameMain/DataTables/UIForm.txt
index f2b96f5..6b11bd8 100644
--- a/Assets/GameMain/DataTables/UIForm.txt
+++ b/Assets/GameMain/DataTables/UIForm.txt
@@ -6,4 +6,3 @@
100 主菜单 MenuForm Default False True
101 设置 SettingForm Default False True
102 关于 AboutForm Default False True
- 103 �����淨A MVC���Խ��� CombineForm Default False True
diff --git a/Assets/GameMain/Scripts/DataTable/BinaryReaderExtension.cs b/Assets/GameMain/Scripts/DataTable/BinaryReaderExtension.cs
index c38ba21..585d668 100644
--- a/Assets/GameMain/Scripts/DataTable/BinaryReaderExtension.cs
+++ b/Assets/GameMain/Scripts/DataTable/BinaryReaderExtension.cs
@@ -9,7 +9,7 @@ using System;
using System.IO;
using UnityEngine;
-namespace StarForce
+namespace DataTable
{
public static class BinaryReaderExtension
{
diff --git a/Assets/GameMain/Scripts/DataTable/DRDialog.cs b/Assets/GameMain/Scripts/DataTable/DRDialog.cs
new file mode 100644
index 0000000..91274f2
--- /dev/null
+++ b/Assets/GameMain/Scripts/DataTable/DRDialog.cs
@@ -0,0 +1,39 @@
+using CustomUtility;
+using Definition.Enum;
+using UnityGameFramework.Runtime;
+
+namespace DataTable
+{
+ public class DRDialog : DataRowBase
+ {
+ private int m_Id;
+
+ ///
+ /// 获取对话编号。
+ ///
+ public override int Id => m_Id;
+
+ ///
+ /// 获取对话标识。
+ ///
+ public string Title { get; private set; }
+
+ ///
+ /// 获取对话形式。
+ ///
+ public DialogUIMode UIMode { get; private set; }
+
+ public override bool ParseDataRow(string dataRowString, object userData)
+ {
+ string[] fields = dataRowString.Split('\t');
+
+ int index = 1;
+ m_Id = int.Parse(fields[index++]);
+ index++;
+ Title = fields[index++];
+ UIMode = EnumUtility.Get(fields[index++]);
+
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/GameMain/Scripts/DataTable/DRDialog.cs.meta b/Assets/GameMain/Scripts/DataTable/DRDialog.cs.meta
new file mode 100644
index 0000000..a22d4d9
--- /dev/null
+++ b/Assets/GameMain/Scripts/DataTable/DRDialog.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fb12692f2a7e6174eae3b0d28c769e55
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/Scripts/DataTable/DRDialogLine.cs b/Assets/GameMain/Scripts/DataTable/DRDialogLine.cs
new file mode 100644
index 0000000..f211f38
--- /dev/null
+++ b/Assets/GameMain/Scripts/DataTable/DRDialogLine.cs
@@ -0,0 +1,64 @@
+using CustomUtility;
+using Definition.Enum;
+using UnityGameFramework.Runtime;
+
+namespace DataTable
+{
+ public class DRDialogLine : DataRowBase
+ {
+ private int m_Id;
+
+ ///
+ /// 获取对话行编号
+ ///
+ public override int Id { get; }
+
+ ///
+ /// 获取说话人 Id。
+ ///
+ public string SpeakerId { get; private set; }
+
+ ///
+ /// 获取说话人表情。
+ ///
+ public ExpressionType Expression { get; private set; }
+
+ ///
+ /// 获取说话人显示名。
+ ///
+ public string SpeakerName { get; private set; }
+
+ ///
+ /// 获取说话人朝向。
+ ///
+ public int Direction { get; private set; }
+
+ ///
+ /// 获取对话内容。
+ ///
+ public string Text { get; private set; }
+
+ ///
+ /// 获取对话效果。
+ ///
+ public EmphasisType Emphasis { get; private set; }
+
+ public override bool ParseDataRow(string dataRowString, object userData)
+ {
+ string[] fields = dataRowString.Split('\t');
+
+ int index = 0;
+ index++;
+ m_Id = int.Parse(fields[index++]);
+ index++;
+ SpeakerId = fields[index++];
+ Expression = EnumUtility.Get(fields[index++]);
+ SpeakerName = fields[index++];
+ Direction = int.Parse(fields[index++]);
+ Text = fields[index++];
+ Emphasis = EnumUtility.Get(fields[index++]);
+
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/GameMain/Scripts/DataTable/DRDialogLine.cs.meta b/Assets/GameMain/Scripts/DataTable/DRDialogLine.cs.meta
new file mode 100644
index 0000000..d4e701e
--- /dev/null
+++ b/Assets/GameMain/Scripts/DataTable/DRDialogLine.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fc6d3e8e61ab627488e22bb5fc28f95d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/Scripts/DataTable/DREntity.cs b/Assets/GameMain/Scripts/DataTable/DREntity.cs
index 84fe1b2..e89ffa6 100644
--- a/Assets/GameMain/Scripts/DataTable/DREntity.cs
+++ b/Assets/GameMain/Scripts/DataTable/DREntity.cs
@@ -16,7 +16,7 @@ using System.Text;
using UnityEngine;
using UnityGameFramework.Runtime;
-namespace StarForce
+namespace DataTable
{
///
/// 实体表。
@@ -28,13 +28,7 @@ namespace StarForce
///
/// 获取实体编号。
///
- public override int Id
- {
- get
- {
- return m_Id;
- }
- }
+ public override int Id => m_Id;
///
/// 获取资源名称。
diff --git a/Assets/GameMain/Scripts/DataTable/DRMusic.cs b/Assets/GameMain/Scripts/DataTable/DRMusic.cs
index 7bad7ce..83b2a31 100644
--- a/Assets/GameMain/Scripts/DataTable/DRMusic.cs
+++ b/Assets/GameMain/Scripts/DataTable/DRMusic.cs
@@ -16,7 +16,7 @@ using System.Text;
using UnityEngine;
using UnityGameFramework.Runtime;
-namespace StarForce
+namespace DataTable
{
///
/// 音乐配置表。
diff --git a/Assets/GameMain/Scripts/DataTable/DRScene.cs b/Assets/GameMain/Scripts/DataTable/DRScene.cs
index af6154e..d68a454 100644
--- a/Assets/GameMain/Scripts/DataTable/DRScene.cs
+++ b/Assets/GameMain/Scripts/DataTable/DRScene.cs
@@ -1,22 +1,8 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-// 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.610
-//------------------------------------------------------------
-
-using GameFramework;
-using System;
-using System.Collections.Generic;
-using System.IO;
+using System.IO;
using System.Text;
-using UnityEngine;
using UnityGameFramework.Runtime;
-namespace StarForce
+namespace DataTable
{
///
/// 场景配置表。
diff --git a/Assets/GameMain/Scripts/DataTable/DRSound.cs b/Assets/GameMain/Scripts/DataTable/DRSound.cs
index 0ce1445..fe12887 100644
--- a/Assets/GameMain/Scripts/DataTable/DRSound.cs
+++ b/Assets/GameMain/Scripts/DataTable/DRSound.cs
@@ -1,22 +1,8 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-// 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.625
-//------------------------------------------------------------
-
-using GameFramework;
-using System;
-using System.Collections.Generic;
-using System.IO;
+using System.IO;
using System.Text;
-using UnityEngine;
using UnityGameFramework.Runtime;
-namespace StarForce
+namespace DataTable
{
///
/// 声音配置表。
diff --git a/Assets/GameMain/Scripts/DataTable/DRUIForm.cs b/Assets/GameMain/Scripts/DataTable/DRUIForm.cs
index 80f914b..712d3be 100644
--- a/Assets/GameMain/Scripts/DataTable/DRUIForm.cs
+++ b/Assets/GameMain/Scripts/DataTable/DRUIForm.cs
@@ -1,14 +1,4 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-// 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.652
-//------------------------------------------------------------
-
-using GameFramework;
+using GameFramework;
using System;
using System.Collections.Generic;
using System.IO;
@@ -16,7 +6,7 @@ using System.Text;
using UnityEngine;
using UnityGameFramework.Runtime;
-namespace StarForce
+namespace DataTable
{
///
/// 界面配置表。
diff --git a/Assets/GameMain/Scripts/DataTable/DRUISound.cs b/Assets/GameMain/Scripts/DataTable/DRUISound.cs
index e303c18..db77bc7 100644
--- a/Assets/GameMain/Scripts/DataTable/DRUISound.cs
+++ b/Assets/GameMain/Scripts/DataTable/DRUISound.cs
@@ -1,14 +1,4 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-// 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.666
-//------------------------------------------------------------
-
-using GameFramework;
+using GameFramework;
using System;
using System.Collections.Generic;
using System.IO;
@@ -16,7 +6,7 @@ using System.Text;
using UnityEngine;
using UnityGameFramework.Runtime;
-namespace StarForce
+namespace DataTable
{
///
/// 声音配置表。
diff --git a/Assets/GameMain/Scripts/DataTable/DataTableExtension.cs b/Assets/GameMain/Scripts/DataTable/DataTableExtension.cs
index 5e82897..b496f91 100644
--- a/Assets/GameMain/Scripts/DataTable/DataTableExtension.cs
+++ b/Assets/GameMain/Scripts/DataTable/DataTableExtension.cs
@@ -1,16 +1,10 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-
-using GameFramework.DataTable;
+using GameFramework.DataTable;
using System;
+using Definition;
using UnityEngine;
using UnityGameFramework.Runtime;
-namespace StarForce
+namespace DataTable
{
public static class DataTableExtension
{
diff --git a/Assets/GameMain/Scripts/Debugger/ChangeLanguageDebuggerWindow.cs b/Assets/GameMain/Scripts/Debugger/ChangeLanguageDebuggerWindow.cs
index 32d46c4..b1632bb 100644
--- a/Assets/GameMain/Scripts/Debugger/ChangeLanguageDebuggerWindow.cs
+++ b/Assets/GameMain/Scripts/Debugger/ChangeLanguageDebuggerWindow.cs
@@ -5,6 +5,7 @@
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
+using Definition;
using GameFramework.Debugger;
using GameFramework.Localization;
using UnityEngine;
diff --git a/Assets/GameMain/Scripts/Definition/Constant/Constant.AssetPriority.cs b/Assets/GameMain/Scripts/Definition/Constant/Constant.AssetPriority.cs
index 9d1c0b9..6c863b6 100644
--- a/Assets/GameMain/Scripts/Definition/Constant/Constant.AssetPriority.cs
+++ b/Assets/GameMain/Scripts/Definition/Constant/Constant.AssetPriority.cs
@@ -5,7 +5,7 @@
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
-namespace StarForce
+namespace Definition
{
public static partial class Constant
{
diff --git a/Assets/GameMain/Scripts/Definition/Constant/Constant.Layer.cs b/Assets/GameMain/Scripts/Definition/Constant/Constant.Layer.cs
index 29c6cda..3f89d5b 100644
--- a/Assets/GameMain/Scripts/Definition/Constant/Constant.Layer.cs
+++ b/Assets/GameMain/Scripts/Definition/Constant/Constant.Layer.cs
@@ -7,7 +7,7 @@
using UnityEngine;
-namespace StarForce
+namespace Definition
{
public static partial class Constant
{
diff --git a/Assets/GameMain/Scripts/Definition/Constant/Constant.Setting.cs b/Assets/GameMain/Scripts/Definition/Constant/Constant.Setting.cs
index 05e6037..1595633 100644
--- a/Assets/GameMain/Scripts/Definition/Constant/Constant.Setting.cs
+++ b/Assets/GameMain/Scripts/Definition/Constant/Constant.Setting.cs
@@ -5,7 +5,7 @@
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
-namespace StarForce
+namespace Definition
{
public static partial class Constant
{
diff --git a/Assets/GameMain/Scripts/Definition/Enum/DialogUIMode.cs b/Assets/GameMain/Scripts/Definition/Enum/DialogUIMode.cs
new file mode 100644
index 0000000..8fff194
--- /dev/null
+++ b/Assets/GameMain/Scripts/Definition/Enum/DialogUIMode.cs
@@ -0,0 +1,22 @@
+namespace Definition.Enum
+{
+ public enum DialogUIMode
+ {
+ None = 0,
+
+ ///
+ /// 黑屏白字
+ ///
+ Mask = 1,
+
+ ///
+ /// 底部对话框
+ ///
+ BottomBox = 2,
+
+ ///
+ /// 对话气泡
+ ///
+ BubbleBox = 3
+ }
+}
\ No newline at end of file
diff --git a/Assets/GameMain/Scripts/Definition/Enum/DialogUIMode.cs.meta b/Assets/GameMain/Scripts/Definition/Enum/DialogUIMode.cs.meta
new file mode 100644
index 0000000..9b7298a
--- /dev/null
+++ b/Assets/GameMain/Scripts/Definition/Enum/DialogUIMode.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7a10763d137f413d828c534b0233f2a6
+timeCreated: 1770600423
\ No newline at end of file
diff --git a/Assets/GameMain/Scripts/Definition/Enum/EmphasisType.cs b/Assets/GameMain/Scripts/Definition/Enum/EmphasisType.cs
new file mode 100644
index 0000000..642dba9
--- /dev/null
+++ b/Assets/GameMain/Scripts/Definition/Enum/EmphasisType.cs
@@ -0,0 +1,13 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Definition.Enum
+{
+ public enum EmphasisType
+ {
+ None,
+ Shake,
+ Blink,
+ }
+}
\ No newline at end of file
diff --git a/Assets/GameMain/Scripts/Definition/Enum/EmphasisType.cs.meta b/Assets/GameMain/Scripts/Definition/Enum/EmphasisType.cs.meta
new file mode 100644
index 0000000..793bc8e
--- /dev/null
+++ b/Assets/GameMain/Scripts/Definition/Enum/EmphasisType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 96908bdc885697e4d9cb0f6627d13230
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/Scripts/Definition/Enum/ExpressionType.cs b/Assets/GameMain/Scripts/Definition/Enum/ExpressionType.cs
new file mode 100644
index 0000000..55ec0e3
--- /dev/null
+++ b/Assets/GameMain/Scripts/Definition/Enum/ExpressionType.cs
@@ -0,0 +1,14 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Definition.Enum
+{
+ public enum ExpressionType
+ {
+ None,
+ Normal,
+ Shock,
+ Happy,
+ }
+}
\ No newline at end of file
diff --git a/Assets/GameMain/Scripts/Definition/Enum/ExpressionType.cs.meta b/Assets/GameMain/Scripts/Definition/Enum/ExpressionType.cs.meta
new file mode 100644
index 0000000..664286a
--- /dev/null
+++ b/Assets/GameMain/Scripts/Definition/Enum/ExpressionType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 174e046d822a14d49843dc415067f13c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/Scripts/UI/UIFormId.cs b/Assets/GameMain/Scripts/Definition/Enum/UIFormId.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/UIFormId.cs
rename to Assets/GameMain/Scripts/Definition/Enum/UIFormId.cs
diff --git a/Assets/GameMain/Scripts/UI/UIFormId.cs.meta b/Assets/GameMain/Scripts/Definition/Enum/UIFormId.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/UIFormId.cs.meta
rename to Assets/GameMain/Scripts/Definition/Enum/UIFormId.cs.meta
diff --git a/Assets/GameMain/Scripts/Entity/EntityExtension.cs b/Assets/GameMain/Scripts/Entity/EntityExtension.cs
index 2f99f10..6d0da7a 100644
--- a/Assets/GameMain/Scripts/Entity/EntityExtension.cs
+++ b/Assets/GameMain/Scripts/Entity/EntityExtension.cs
@@ -7,6 +7,8 @@
using GameFramework.DataTable;
using System;
+using CustomUtility;
+using DataTable;
using Entity;
using Entity.EntityData;
using UnityGameFramework.Runtime;
diff --git a/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureChangeScene.cs b/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureChangeScene.cs
index d357d7d..97e9998 100644
--- a/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureChangeScene.cs
+++ b/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureChangeScene.cs
@@ -1,10 +1,6 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-
+using CustomUtility;
+using DataTable;
+using Definition;
using GameFramework.DataTable;
using GameFramework.Event;
using Scene;
diff --git a/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureLaunch.cs b/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureLaunch.cs
index 6b8e9bc..f86746a 100644
--- a/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureLaunch.cs
+++ b/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureLaunch.cs
@@ -1,12 +1,6 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-
-using GameFramework.Localization;
+using GameFramework.Localization;
using System;
+using Definition;
using StarForce;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm;
diff --git a/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedurePreload.cs b/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedurePreload.cs
index 0b98cf8..d517acd 100644
--- a/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedurePreload.cs
+++ b/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedurePreload.cs
@@ -1,15 +1,10 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-
-using GameFramework;
+using GameFramework;
using GameFramework.Event;
using GameFramework.Resource;
using System.Collections.Generic;
-using StarForce;
+using CustomUtility;
+using DataTable;
+using Definition;
using TMPro;
using UI;
using UnityEngine;
@@ -28,6 +23,8 @@ namespace Procedure
"Sound",
"UIForm",
"UISound",
+ "Dialog",
+ "DialogLine"
};
private Dictionary _loadedFlag = new Dictionary();
diff --git a/Assets/GameMain/Scripts/Sound/SoundExtension.cs b/Assets/GameMain/Scripts/Sound/SoundExtension.cs
index 518fd5d..d8fce21 100644
--- a/Assets/GameMain/Scripts/Sound/SoundExtension.cs
+++ b/Assets/GameMain/Scripts/Sound/SoundExtension.cs
@@ -5,6 +5,9 @@
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
+using CustomUtility;
+using DataTable;
+using Definition;
using Entity;
using GameFramework;
using GameFramework.DataTable;
diff --git a/Assets/GameMain/Scripts/UI/Base.meta b/Assets/GameMain/Scripts/UI/Base.meta
new file mode 100644
index 0000000..4c418c7
--- /dev/null
+++ b/Assets/GameMain/Scripts/UI/Base.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8cb383e8977814343a630c164eed6c51
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/Scripts/UI/IFormController.cs b/Assets/GameMain/Scripts/UI/Base/IFormController.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/IFormController.cs
rename to Assets/GameMain/Scripts/UI/Base/IFormController.cs
diff --git a/Assets/GameMain/Scripts/UI/IFormController.cs.meta b/Assets/GameMain/Scripts/UI/Base/IFormController.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/IFormController.cs.meta
rename to Assets/GameMain/Scripts/UI/Base/IFormController.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/UGuiForm.cs b/Assets/GameMain/Scripts/UI/Base/UGuiForm.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/UGuiForm.cs
rename to Assets/GameMain/Scripts/UI/Base/UGuiForm.cs
diff --git a/Assets/GameMain/Scripts/UI/UGuiForm.cs.meta b/Assets/GameMain/Scripts/UI/Base/UGuiForm.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/UGuiForm.cs.meta
rename to Assets/GameMain/Scripts/UI/Base/UGuiForm.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/UIContext.cs b/Assets/GameMain/Scripts/UI/Base/UIContext.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/UIContext.cs
rename to Assets/GameMain/Scripts/UI/Base/UIContext.cs
diff --git a/Assets/GameMain/Scripts/UI/UIContext.cs.meta b/Assets/GameMain/Scripts/UI/Base/UIContext.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/UIContext.cs.meta
rename to Assets/GameMain/Scripts/UI/Base/UIContext.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA.meta b/Assets/GameMain/Scripts/UI/Combine.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA.meta
rename to Assets/GameMain/Scripts/UI/Combine.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Context.meta b/Assets/GameMain/Scripts/UI/Combine/Context.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Context.meta
rename to Assets/GameMain/Scripts/UI/Combine/Context.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Context/CombineFormContext.cs b/Assets/GameMain/Scripts/UI/Combine/Context/CombineFormContext.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Context/CombineFormContext.cs
rename to Assets/GameMain/Scripts/UI/Combine/Context/CombineFormContext.cs
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Context/CombineFormContext.cs.meta b/Assets/GameMain/Scripts/UI/Combine/Context/CombineFormContext.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Context/CombineFormContext.cs.meta
rename to Assets/GameMain/Scripts/UI/Combine/Context/CombineFormContext.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Context/CombinePartContext.cs b/Assets/GameMain/Scripts/UI/Combine/Context/CombinePartContext.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Context/CombinePartContext.cs
rename to Assets/GameMain/Scripts/UI/Combine/Context/CombinePartContext.cs
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Context/CombinePartContext.cs.meta b/Assets/GameMain/Scripts/UI/Combine/Context/CombinePartContext.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Context/CombinePartContext.cs.meta
rename to Assets/GameMain/Scripts/UI/Combine/Context/CombinePartContext.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Context/CombineSlotContext.cs b/Assets/GameMain/Scripts/UI/Combine/Context/CombineSlotContext.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Context/CombineSlotContext.cs
rename to Assets/GameMain/Scripts/UI/Combine/Context/CombineSlotContext.cs
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Context/CombineSlotContext.cs.meta b/Assets/GameMain/Scripts/UI/Combine/Context/CombineSlotContext.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Context/CombineSlotContext.cs.meta
rename to Assets/GameMain/Scripts/UI/Combine/Context/CombineSlotContext.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Controller.meta b/Assets/GameMain/Scripts/UI/Combine/Controller.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Controller.meta
rename to Assets/GameMain/Scripts/UI/Combine/Controller.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Controller/CombineFormController.cs b/Assets/GameMain/Scripts/UI/Combine/Controller/CombineFormController.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Controller/CombineFormController.cs
rename to Assets/GameMain/Scripts/UI/Combine/Controller/CombineFormController.cs
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/Controller/CombineFormController.cs.meta b/Assets/GameMain/Scripts/UI/Combine/Controller/CombineFormController.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/Controller/CombineFormController.cs.meta
rename to Assets/GameMain/Scripts/UI/Combine/Controller/CombineFormController.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/View.meta b/Assets/GameMain/Scripts/UI/Combine/View.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/View.meta
rename to Assets/GameMain/Scripts/UI/Combine/View.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/View/CombineDraggablePart.cs b/Assets/GameMain/Scripts/UI/Combine/View/CombineDraggablePart.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/View/CombineDraggablePart.cs
rename to Assets/GameMain/Scripts/UI/Combine/View/CombineDraggablePart.cs
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/View/CombineDraggablePart.cs.meta b/Assets/GameMain/Scripts/UI/Combine/View/CombineDraggablePart.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/View/CombineDraggablePart.cs.meta
rename to Assets/GameMain/Scripts/UI/Combine/View/CombineDraggablePart.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/View/CombineForm.cs b/Assets/GameMain/Scripts/UI/Combine/View/CombineForm.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/View/CombineForm.cs
rename to Assets/GameMain/Scripts/UI/Combine/View/CombineForm.cs
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/View/CombineForm.cs.meta b/Assets/GameMain/Scripts/UI/Combine/View/CombineForm.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/View/CombineForm.cs.meta
rename to Assets/GameMain/Scripts/UI/Combine/View/CombineForm.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/View/CombineSlot.cs b/Assets/GameMain/Scripts/UI/Combine/View/CombineSlot.cs
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/View/CombineSlot.cs
rename to Assets/GameMain/Scripts/UI/Combine/View/CombineSlot.cs
diff --git a/Assets/GameMain/Scripts/UI/GameplayA/View/CombineSlot.cs.meta b/Assets/GameMain/Scripts/UI/Combine/View/CombineSlot.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/UI/GameplayA/View/CombineSlot.cs.meta
rename to Assets/GameMain/Scripts/UI/Combine/View/CombineSlot.cs.meta
diff --git a/Assets/GameMain/Scripts/UI/UIExtension.cs b/Assets/GameMain/Scripts/UI/UIExtension.cs
index 3b6d6b8..795c8d9 100644
--- a/Assets/GameMain/Scripts/UI/UIExtension.cs
+++ b/Assets/GameMain/Scripts/UI/UIExtension.cs
@@ -1,13 +1,9 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-
-using GameFramework.DataTable;
+using GameFramework.DataTable;
using GameFramework.UI;
using System.Collections;
+using CustomUtility;
+using DataTable;
+using Definition;
using Procedure;
using StarForce;
using UnityEngine;
diff --git a/Assets/GameMain/Scripts/Utility/AssetUtility.cs b/Assets/GameMain/Scripts/Utility/AssetUtility.cs
index 5557d0c..4b9449a 100644
--- a/Assets/GameMain/Scripts/Utility/AssetUtility.cs
+++ b/Assets/GameMain/Scripts/Utility/AssetUtility.cs
@@ -7,7 +7,7 @@
using GameFramework;
-namespace StarForce
+namespace CustomUtility
{
public static class AssetUtility
{
diff --git a/Assets/GameMain/Scripts/Utility/EnumUtility.cs b/Assets/GameMain/Scripts/Utility/EnumUtility.cs
new file mode 100644
index 0000000..83de003
--- /dev/null
+++ b/Assets/GameMain/Scripts/Utility/EnumUtility.cs
@@ -0,0 +1,27 @@
+using System.Collections.Generic;
+using UnityGameFramework.Runtime;
+
+namespace CustomUtility
+{
+ public static class EnumUtility where T : struct, System.Enum
+ {
+ private static readonly Dictionary _enumCache = new();
+
+ public static T Get(string value)
+ {
+ if (!_enumCache.TryGetValue(value, out T result))
+ {
+ if (System.Enum.TryParse(value, true, out result))
+ {
+ _enumCache[value] = result;
+ }
+ else
+ {
+ Log.Error($"Enum 解析失败:类型:{typeof(T).Name} 不包含值 {value}");
+ }
+ }
+
+ return result;
+ }
+ }
+}
diff --git a/Assets/GameMain/Scripts/Utility/EnumUtility.cs.meta b/Assets/GameMain/Scripts/Utility/EnumUtility.cs.meta
new file mode 100644
index 0000000..6850aba
--- /dev/null
+++ b/Assets/GameMain/Scripts/Utility/EnumUtility.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d0591e8f95955014f8c2f8d9ba3c9247
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/Scripts/Utility/LitJsonHelper.cs b/Assets/GameMain/Scripts/Utility/LitJsonHelper.cs
index 19a242e..f2d3f1e 100644
--- a/Assets/GameMain/Scripts/Utility/LitJsonHelper.cs
+++ b/Assets/GameMain/Scripts/Utility/LitJsonHelper.cs
@@ -9,7 +9,7 @@ using GameFramework;
using LitJson;
using System;
-namespace StarForce
+namespace CustomUtility
{
///
/// LitJSON 函数集辅助器。
diff --git a/Assets/GameMain/Scripts/Utility/WebUtility.cs b/Assets/GameMain/Scripts/Utility/WebUtility.cs
index 8d5ceeb..f1c0fcf 100644
--- a/Assets/GameMain/Scripts/Utility/WebUtility.cs
+++ b/Assets/GameMain/Scripts/Utility/WebUtility.cs
@@ -1,13 +1,6 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
+using System;
-using System;
-
-namespace StarForce
+namespace CustomUtility
{
public static class WebUtility
{
diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset
index c2da562..403c004 100644
--- a/ProjectSettings/ProjectSettings.asset
+++ b/ProjectSettings/ProjectSettings.asset
@@ -812,11 +812,23 @@ PlayerSettings:
webGLMemoryGeometricGrowthCap: 96
webGLPowerPreference: 2
scriptingDefineSymbols:
- Android: ENABLE_DEBUG_AND_ABOVE_LOG
- Standalone: ENABLE_DEBUG_AND_ABOVE_LOG
- WebGL: ENABLE_DEBUG_AND_ABOVE_LOG
- Windows Store Apps: ENABLE_DEBUG_AND_ABOVE_LOG
- iPhone: ENABLE_DEBUG_AND_ABOVE_LOG
+ Android: ENABLE_DEBUG_AND_ABOVE_LOG;DOTWEEN
+ EmbeddedLinux: DOTWEEN
+ GameCoreScarlett: DOTWEEN
+ GameCoreXboxOne: DOTWEEN
+ LinuxHeadlessSimulation: DOTWEEN
+ Nintendo Switch: DOTWEEN
+ PS4: DOTWEEN
+ PS5: DOTWEEN
+ QNX: DOTWEEN
+ Stadia: DOTWEEN
+ Standalone: ENABLE_DEBUG_AND_ABOVE_LOG;DOTWEEN
+ VisionOS: DOTWEEN
+ WebGL: ENABLE_DEBUG_AND_ABOVE_LOG;DOTWEEN
+ Windows Store Apps: ENABLE_DEBUG_AND_ABOVE_LOG;DOTWEEN
+ XboxOne: DOTWEEN
+ iPhone: ENABLE_DEBUG_AND_ABOVE_LOG;DOTWEEN
+ tvOS: DOTWEEN
additionalCompilerArguments: {}
platformArchitecture: {}
scriptingBackend: {}
diff --git a/数据表/Dialog.txt b/数据表/Dialog.txt
new file mode 100644
index 0000000..a3e4690
--- /dev/null
+++ b/数据表/Dialog.txt
@@ -0,0 +1,7 @@
+# 对话标识表 筛选用数据
+# Id Title UIMode ChapterId
+# int string DialogUIMode int
+# 对话编号 策划备注 对话标识 对话形式 章节编号
+ 1001 第一章介绍 Chapter1_Intro Mask 1.001
+ 1002 第一章主流程 Chapter1_Main BottomBox 1.002
+ 1003 第一章玩法开始前闲聊 Chapter1_SmallTalk1 BubbleBox 1.003
diff --git a/数据表/Dialog.xlsx b/数据表/Dialog.xlsx
new file mode 100644
index 0000000..6643c37
Binary files /dev/null and b/数据表/Dialog.xlsx differ
diff --git a/数据表/DialogLine.txt b/数据表/DialogLine.txt
new file mode 100644
index 0000000..49a55c7
--- /dev/null
+++ b/数据表/DialogLine.txt
@@ -0,0 +1,13 @@
+# 对话内容表 筛选用数据
+# Id SpeakerId Expression SpeakerName Direction Text Emphasis ChapterId DialogId
+# int int ExpressionType string int string EmphasisType int int
+# 对话行编号 策划备注 说话人Id 表情 显示人名 说话朝向 说话内容 演出效果 章节Id 对话Id
+ 100100001 Id规则为 Null Null Null 0 相传。 1.00100001 1001.00001
+ 100100002 第1位数为章节Id Null Null Null 0 Mask。 1.00100002 1001.00002
+ 100100003 第2-4位数为对话Id Null Null Null 0 很好。 1.00100003 1001.00003
+ 100200001 第5-9位数为对话行Id Xu Normal 徐晟壹 0 你好,王。 1.00200001 1002.00001
+ 100200002 Wang Normal 王可嘉 1 你好,徐。 1.00200002 1002.00002
+ 100200003 Master Normal 李诫 1 你们好。 1.00200003 1002.00003
+ 100300001 Npc1 Null Null 0 这人谁啊? 1.00300001 1003.00001
+ 100300002 Npc2 Null Null 0 不知道啊? 1.00300002 1003.00002
+ 100300003 Npc1 Null Null 0 不知道你在这干嘛。 1.00300003 1003.00003
diff --git a/数据表/DialogLine.xlsx b/数据表/DialogLine.xlsx
new file mode 100644
index 0000000..7caec29
Binary files /dev/null and b/数据表/DialogLine.xlsx differ
diff --git a/数据表/Scene.txt b/数据表/Scene.txt
index 29826e2..6aecfae 100644
--- a/数据表/Scene.txt
+++ b/数据表/Scene.txt
@@ -5,4 +5,3 @@
1 菜单场景 Menu 1
2 战斗场景 Main 2
3 压力测试场景 StressTest 0
- 4 玩法A测试场景 GameplayA 0
\ No newline at end of file
diff --git a/数据表/UIForm.txt b/数据表/UIForm.txt
index 20740d2..6b11bd8 100644
--- a/数据表/UIForm.txt
+++ b/数据表/UIForm.txt
@@ -6,4 +6,3 @@
100 主菜单 MenuForm Default False True
101 设置 SettingForm Default False True
102 关于 AboutForm Default False True
- 103 淨A MVCԽ CoreGameplayAMvcForm Default False True
diff --git a/数据表/Weapon.txt b/数据表/Weapon.txt
deleted file mode 100644
index 8d2b3fd..0000000
--- a/数据表/Weapon.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-# 武器表
-# Id Attack AttackInterval BulletId BulletSpeed BulletSoundId
-# int int float int float int
-# 武器编号 策划备注 攻击力 攻击间隔 子弹编号 子弹速度 子弹声音编号
- 30000 玩家武器 100 0.2 50000 20 10000
diff --git a/数据表/Weapon.xlsx b/数据表/Weapon.xlsx
deleted file mode 100644
index d1a4057..0000000
Binary files a/数据表/Weapon.xlsx and /dev/null differ
diff --git a/数据表/convert.py b/数据表/convert.py
index 82e3435..ba85f28 100644
--- a/数据表/convert.py
+++ b/数据表/convert.py
@@ -1,45 +1,53 @@
-import pandas as pd
-import os
+import os
import shutil
+import pandas as pd
+
+
def convert_excel_to_txt(folder_path='.'):
- # 计数器,用于最后汇总
+ # 计数器,用于最后统计
count = 0
target_dir = os.path.join(os.path.dirname(__file__), '../Assets/GameMain/DataTables')
target_dir = os.path.abspath(target_dir)
-
+
# 确保目标目录存在
os.makedirs(target_dir, exist_ok=True)
-
- for file_name in os.listdir(folder_path):
- if file_name.endswith(('.xlsx', '.xls')):
- file_path = os.path.join(folder_path, file_name)
+
+ for root, _, files in os.walk(folder_path):
+ for file_name in files:
+ if not file_name.lower().endswith(('.xlsx', '.xls')):
+ continue
+ # 跳过 Excel 临时锁文件
+ if file_name.startswith('~$'):
+ continue
+
+ file_path = os.path.join(root, file_name)
base_name = os.path.splitext(file_path)[0]
- output_file = base_name.replace(os.path.basename(base_name), os.path.basename(base_name)) + '.txt'
-
- print(f"正在处理: {file_name}...")
-
+ output_file = base_name + '.txt'
+
+ print(f"正在处理: {file_path}...")
+
try:
df = pd.read_excel(file_path, header=None)
-
+
df.to_csv(output_file, sep='\t', index=False, header=False, encoding='utf-8')
-
+
# 复制文件到目标目录
target_file = os.path.join(target_dir, os.path.basename(output_file))
shutil.copy2(output_file, target_file)
-
+
print(f"成功转换 -> {output_file}")
print(f"已复制到 -> {target_file}")
count += 1
-
+
except Exception as e:
- print(f"处理 {file_name} 时出错: {e}")
+ print(f"处理 {file_path} 时出错: {e}")
print(f"\n任务完成!共转换了 {count} 个文件。")
+
if __name__ == "__main__":
convert_excel_to_txt('.')
-
- # --- 关键修改:在这里添加暂停 ---
- print("\n" + "="*30)
- input("按回车键(Enter)退出程序...")
\ No newline at end of file
+
+ print("\n" + "=" * 30)
+ input("按回车键(Enter)退出程序...")