diff --git a/DungeonShooting_Godot/DungeonShooting.csproj b/DungeonShooting_Godot/DungeonShooting.csproj
index 1c27fa0..ae650b1 100644
--- a/DungeonShooting_Godot/DungeonShooting.csproj
+++ b/DungeonShooting_Godot/DungeonShooting.csproj
@@ -14,7 +14,4 @@
-
-
-
\ No newline at end of file
diff --git a/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ExcelGenerator.cs b/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ExcelGenerator.cs
index 0915274..c6d9490 100644
--- a/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ExcelGenerator.cs
+++ b/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ExcelGenerator.cs
@@ -5,19 +5,14 @@
using System.IO;
using System.Text.Json;
using System.Text.RegularExpressions;
-using Config;
-using Godot;
-using NPOI.SS.UserModel;
-using NPOI.XSSF.UserModel;
-using Array = Godot.Collections.Array;
+// using NPOI.SS.UserModel;
+// using NPOI.XSSF.UserModel;
using Environment = System.Environment;
namespace Generator;
public static class ExcelGenerator
{
- private static HashSet _excelNames = new HashSet();
-
private enum CollectionsType
{
None,
@@ -83,7 +78,7 @@
/// 代码输出路径
public static bool ExportExcel(string excelFilePath, string jsonOutPath, string codeOutPath)
{
- _excelNames.Clear();
+ var excelNames = new HashSet();
Debug.Log("当前路径: " + Environment.CurrentDirectory);
Debug.Log("excel路径: " + excelFilePath);
Debug.Log("json输出路径: " + jsonOutPath);
@@ -100,7 +95,7 @@
foreach (var fileInfo in fileInfos)
{
var fileName = Path.GetFileNameWithoutExtension(fileInfo.Name).FirstToUpper();
- _excelNames.Add(fileName);
+ excelNames.Add(fileName);
}
//读取配置文件
foreach (var fileInfo in fileInfos)
@@ -112,7 +107,7 @@
throw new Exception("excel表文件名称不允许叫'ExcelConfig.xlsx'!");
}
Debug.Log("excel表: " + fileInfo.FullName);
- excelDataList.Add(ReadExcel(fileInfo.FullName));
+ excelDataList.Add(ReadExcel(excelNames, fileInfo.FullName));
}
}
}
@@ -319,7 +314,7 @@
return code;
}
- private static ExcelData ReadExcel(string excelPath)
+ private static ExcelData ReadExcel(HashSet excelNames, string excelPath)
{
var excelData = new ExcelData();
//文件名称
@@ -403,7 +398,7 @@
MappingData mappingData;
try
{
- mappingData = ConvertToType(typeString.Replace(" ", ""));
+ mappingData = ConvertToType(excelNames, typeString.Replace(" ", ""));
}
catch (Exception e)
{
@@ -615,7 +610,7 @@
return bool.Parse(value);
}
- private static MappingData ConvertToType(string str, int depth = 0)
+ private static MappingData ConvertToType(HashSet excelNames, string str, int depth = 0)
{
if (Regex.IsMatch(str, "^\\w+$"))
{
@@ -626,7 +621,7 @@
else if (Regex.IsMatch(str, "^\\$\\w+$")) //引用其他表
{
var realName = str.Substring(1);
- if (!_excelNames.Contains(realName))
+ if (!excelNames.Contains(realName))
{
throw new Exception($"引用表数据失败, 未找到表: {realName}!");
}
@@ -653,8 +648,8 @@
throw new Exception($"字典key类型必须是基础类型!");
}
- var type1 = ConvertToType(keyStr, depth + 1);
- var type2 = ConvertToType(tempStr.Substring(index + 1), depth + 1);
+ var type1 = ConvertToType(excelNames, keyStr, depth + 1);
+ var type2 = ConvertToType(excelNames, tempStr.Substring(index + 1), depth + 1);
var typeStr = $"Dictionary<{type1.TypeStr}, {type2.TypeStr}>";
var typeName = $"System.Collections.Generic.Dictionary`2[[{type1.TypeName}],[{type2.TypeName}]]";
@@ -670,7 +665,7 @@
else if (str.StartsWith('[')) //数组
{
var tempStr = str.Substring(1, str.Length - 2);
- var typeData = ConvertToType(tempStr, depth + 1);
+ var typeData = ConvertToType(excelNames, tempStr, depth + 1);
var typeStr = typeData.TypeStr + "[]";
var typeName = typeData.TypeName + "[]";
diff --git a/DungeonShooting_Godot/prefab/ui/EditorImportCombination.tscn b/DungeonShooting_Godot/prefab/ui/EditorImportCombination.tscn
new file mode 100644
index 0000000..26cf649
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/ui/EditorImportCombination.tscn
@@ -0,0 +1,63 @@
+[gd_scene load_steps=2 format=3 uid="uid://dl0u8eggomust"]
+
+[ext_resource type="Script" path="res://src/game/ui/editorImportCombination/EditorImportCombinationPanel.cs" id="1_4wd6k"]
+
+[node name="EditorImportCombination" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = ExtResource("1_4wd6k")
+
+[node name="MarginContainer" type="MarginContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+theme_override_constants/margin_left = 20
+theme_override_constants/margin_top = 50
+theme_override_constants/margin_right = 20
+theme_override_constants/margin_bottom = 20
+
+[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
+layout_mode = 2
+theme_override_constants/separation = 20
+
+[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="NameLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 20.0
+text = "组名称:"
+horizontal_alignment = 2
+vertical_alignment = 1
+
+[node name="NameInput" type="LineEdit" parent="MarginContainer/VBoxContainer/HBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 80.0
+placeholder_text = "请输入组合名称"
+
+[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="PreviewLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 0
+size_flags_stretch_ratio = 20.0
+text = "预览:"
+horizontal_alignment = 2
+vertical_alignment = 1
+
+[node name="RemarkInput" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
+custom_minimum_size = Vector2(0, 300)
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 80.0
+expand_mode = 2
+stretch_mode = 5
diff --git a/DungeonShooting_Godot/prefab/ui/TileSetEditorCombination.tscn b/DungeonShooting_Godot/prefab/ui/TileSetEditorCombination.tscn
index 2ab686e..5bb24aa 100644
--- a/DungeonShooting_Godot/prefab/ui/TileSetEditorCombination.tscn
+++ b/DungeonShooting_Godot/prefab/ui/TileSetEditorCombination.tscn
@@ -56,7 +56,7 @@
[node name="LeftTop" type="Panel" parent="HSplitContainer/VSplitContainer"]
layout_mode = 2
size_flags_vertical = 3
-size_flags_stretch_ratio = 40.0
+size_flags_stretch_ratio = 60.0
[node name="MarginContainer" type="MarginContainer" parent="HSplitContainer/VSplitContainer/LeftTop"]
layout_mode = 1
@@ -160,7 +160,7 @@
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
-size_flags_stretch_ratio = 60.0
+size_flags_stretch_ratio = 40.0
[node name="MarginContainer" type="MarginContainer" parent="HSplitContainer/VSplitContainer/LeftBottom"]
layout_mode = 1
diff --git a/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs b/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs
index 2d9ed4e..9c93ece 100644
--- a/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs
+++ b/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs
@@ -426,6 +426,33 @@
};
}
+ public static void ShowImportCombination(string showName, Action onSelectObject, UiBase parentUi = null)
+ {
+ var window = CreateWindowInstance(parentUi);
+ window.S_Window.Instance.Size = new Vector2I(600, 500);
+ window.SetWindowTitle("导入组合");
+ var body = window.OpenBody(UiManager.UiNames.EditorImportCombination);
+ window.SetButtonList(
+ new EditorWindowPanel.ButtonData("确定", () =>
+ {
+ var selectObject = body.GetSelectData();
+ if (selectObject == null)
+ {
+ ShowTips("提示", "您未选择任何物体");
+ }
+ else
+ {
+ window.CloseWindow();
+ onSelectObject("");
+ }
+ }),
+ new EditorWindowPanel.ButtonData("取消", () =>
+ {
+ window.CloseWindow();
+ })
+ );
+ }
+
private static EditorWindowPanel CreateWindowInstance(UiBase parentUi = null)
{
if (parentUi != null)
diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
index c77d205..c8c468d 100644
--- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
+++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
@@ -6,8 +6,6 @@
public const string default_bus_layout_tres = "res://default_bus_layout.tres";
public const string default_env_tres = "res://default_env.tres";
public const string icon_png = "res://icon.png";
- public const string excel_DungeonShooting_ExcelTool_deps_json = "res://excel/DungeonShooting_ExcelTool.deps.json";
- public const string excel_DungeonShooting_ExcelTool_runtimeconfig_json = "res://excel/DungeonShooting_ExcelTool.runtimeconfig.json";
public const string prefab_Cursor_tscn = "res://prefab/Cursor.tscn";
public const string prefab_bullet_explode_Explode0001_tscn = "res://prefab/bullet/explode/Explode0001.tscn";
public const string prefab_bullet_laser_Laser0001_tscn = "res://prefab/bullet/laser/Laser0001.tscn";
@@ -64,6 +62,7 @@
public const string prefab_ui_BottomTips_tscn = "res://prefab/ui/BottomTips.tscn";
public const string prefab_ui_Debugger_tscn = "res://prefab/ui/Debugger.tscn";
public const string prefab_ui_EditorColorPicker_tscn = "res://prefab/ui/EditorColorPicker.tscn";
+ public const string prefab_ui_EditorImportCombination_tscn = "res://prefab/ui/EditorImportCombination.tscn";
public const string prefab_ui_EditorTips_tscn = "res://prefab/ui/EditorTips.tscn";
public const string prefab_ui_EditorTools_tscn = "res://prefab/ui/EditorTools.tscn";
public const string prefab_ui_EditorWindow_tscn = "res://prefab/ui/EditorWindow.tscn";
@@ -292,6 +291,7 @@
public const string resource_sprite_ui_commonIcon_Block_png = "res://resource/sprite/ui/commonIcon/Block.png";
public const string resource_sprite_ui_commonIcon_CenterTool_png = "res://resource/sprite/ui/commonIcon/CenterTool.png";
public const string resource_sprite_ui_commonIcon_Delete_png = "res://resource/sprite/ui/commonIcon/Delete.png";
+ public const string resource_sprite_ui_commonIcon_Delete2_png = "res://resource/sprite/ui/commonIcon/Delete2.png";
public const string resource_sprite_ui_commonIcon_DoorTool_png = "res://resource/sprite/ui/commonIcon/DoorTool.png";
public const string resource_sprite_ui_commonIcon_Down_png = "res://resource/sprite/ui/commonIcon/Down.png";
public const string resource_sprite_ui_commonIcon_DragTool_png = "res://resource/sprite/ui/commonIcon/DragTool.png";
diff --git a/DungeonShooting_Godot/src/game/manager/UiManager_Methods.cs b/DungeonShooting_Godot/src/game/manager/UiManager_Methods.cs
index b4eb5bf..d110658 100644
--- a/DungeonShooting_Godot/src/game/manager/UiManager_Methods.cs
+++ b/DungeonShooting_Godot/src/game/manager/UiManager_Methods.cs
@@ -8,6 +8,7 @@
public const string BottomTips = "BottomTips";
public const string Debugger = "Debugger";
public const string EditorColorPicker = "EditorColorPicker";
+ public const string EditorImportCombination = "EditorImportCombination";
public const string EditorTips = "EditorTips";
public const string EditorTools = "EditorTools";
public const string EditorWindow = "EditorWindow";
@@ -180,6 +181,54 @@
}
///
+ /// 创建 EditorImportCombination, 并返回UI实例, 该函数不会打开 Ui
+ ///
+ public static UI.EditorImportCombination.EditorImportCombinationPanel Create_EditorImportCombination()
+ {
+ return CreateUi(UiNames.EditorImportCombination);
+ }
+
+ ///
+ /// 打开 EditorImportCombination, 并返回UI实例
+ ///
+ public static UI.EditorImportCombination.EditorImportCombinationPanel Open_EditorImportCombination()
+ {
+ return OpenUi(UiNames.EditorImportCombination);
+ }
+
+ ///
+ /// 隐藏 EditorImportCombination 的所有实例
+ ///
+ public static void Hide_EditorImportCombination()
+ {
+ var uiInstance = Get_EditorImportCombination_Instance();
+ foreach (var uiPanel in uiInstance)
+ {
+ uiPanel.HideUi();
+ }
+ }
+
+ ///
+ /// 销毁 EditorImportCombination 的所有实例
+ ///
+ public static void Destroy_EditorImportCombination()
+ {
+ var uiInstance = Get_EditorImportCombination_Instance();
+ foreach (var uiPanel in uiInstance)
+ {
+ uiPanel.Destroy();
+ }
+ }
+
+ ///
+ /// 获取所有 EditorImportCombination 的实例, 如果没有实例, 则返回一个空数组
+ ///
+ public static UI.EditorImportCombination.EditorImportCombinationPanel[] Get_EditorImportCombination_Instance()
+ {
+ return GetUiInstance(nameof(UI.EditorImportCombination.EditorImportCombination));
+ }
+
+ ///
/// 创建 EditorTips, 并返回UI实例, 该函数不会打开 Ui
///
public static UI.EditorTips.EditorTipsPanel Create_EditorTips()
diff --git a/DungeonShooting_Godot/src/game/ui/editorImportCombination/EditorImportCombination.cs b/DungeonShooting_Godot/src/game/ui/editorImportCombination/EditorImportCombination.cs
new file mode 100644
index 0000000..d457f82
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/ui/editorImportCombination/EditorImportCombination.cs
@@ -0,0 +1,235 @@
+namespace UI.EditorImportCombination;
+
+///
+/// Ui代码, 该类是根据ui场景自动生成的, 请不要手动编辑该类, 以免造成代码丢失
+///
+public abstract partial class EditorImportCombination : UiBase
+{
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: EditorImportCombination.MarginContainer
+ ///
+ public MarginContainer L_MarginContainer
+ {
+ get
+ {
+ if (_L_MarginContainer == null) _L_MarginContainer = new MarginContainer((EditorImportCombinationPanel)this, GetNode("MarginContainer"));
+ return _L_MarginContainer;
+ }
+ }
+ private MarginContainer _L_MarginContainer;
+
+
+ public EditorImportCombination() : base(nameof(EditorImportCombination))
+ {
+ }
+
+ public sealed override void OnInitNestedUi()
+ {
+
+ }
+
+ ///
+ /// 类型: , 路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer.NameLabel
+ ///
+ public class NameLabel : UiNode
+ {
+ public NameLabel(EditorImportCombinationPanel uiPanel, Godot.Label node) : base(uiPanel, node) { }
+ public override NameLabel Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate());
+ }
+
+ ///
+ /// 类型: , 路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer.NameInput
+ ///
+ public class NameInput : UiNode
+ {
+ public NameInput(EditorImportCombinationPanel uiPanel, Godot.LineEdit node) : base(uiPanel, node) { }
+ public override NameInput Clone() => new (UiPanel, (Godot.LineEdit)Instance.Duplicate());
+ }
+
+ ///
+ /// 类型: , 路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer
+ ///
+ public class HBoxContainer : UiNode
+ {
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.NameLabel
+ ///
+ public NameLabel L_NameLabel
+ {
+ get
+ {
+ if (_L_NameLabel == null) _L_NameLabel = new NameLabel(UiPanel, Instance.GetNode("NameLabel"));
+ return _L_NameLabel;
+ }
+ }
+ private NameLabel _L_NameLabel;
+
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.NameInput
+ ///
+ public NameInput L_NameInput
+ {
+ get
+ {
+ if (_L_NameInput == null) _L_NameInput = new NameInput(UiPanel, Instance.GetNode("NameInput"));
+ return _L_NameInput;
+ }
+ }
+ private NameInput _L_NameInput;
+
+ public HBoxContainer(EditorImportCombinationPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { }
+ public override HBoxContainer Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate());
+ }
+
+ ///
+ /// 类型: , 路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer2.PreviewLabel
+ ///
+ public class PreviewLabel : UiNode
+ {
+ public PreviewLabel(EditorImportCombinationPanel uiPanel, Godot.Label node) : base(uiPanel, node) { }
+ public override PreviewLabel Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate());
+ }
+
+ ///
+ /// 类型: , 路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer2.RemarkInput
+ ///
+ public class RemarkInput : UiNode
+ {
+ public RemarkInput(EditorImportCombinationPanel uiPanel, Godot.TextureRect node) : base(uiPanel, node) { }
+ public override RemarkInput Clone() => new (UiPanel, (Godot.TextureRect)Instance.Duplicate());
+ }
+
+ ///
+ /// 类型: , 路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer2
+ ///
+ public class HBoxContainer2 : UiNode
+ {
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.PreviewLabel
+ ///
+ public PreviewLabel L_PreviewLabel
+ {
+ get
+ {
+ if (_L_PreviewLabel == null) _L_PreviewLabel = new PreviewLabel(UiPanel, Instance.GetNode("PreviewLabel"));
+ return _L_PreviewLabel;
+ }
+ }
+ private PreviewLabel _L_PreviewLabel;
+
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.RemarkInput
+ ///
+ public RemarkInput L_RemarkInput
+ {
+ get
+ {
+ if (_L_RemarkInput == null) _L_RemarkInput = new RemarkInput(UiPanel, Instance.GetNode("RemarkInput"));
+ return _L_RemarkInput;
+ }
+ }
+ private RemarkInput _L_RemarkInput;
+
+ public HBoxContainer2(EditorImportCombinationPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { }
+ public override HBoxContainer2 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate());
+ }
+
+ ///
+ /// 类型: , 路径: EditorImportCombination.MarginContainer.VBoxContainer
+ ///
+ public class VBoxContainer : UiNode
+ {
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.HBoxContainer
+ ///
+ public HBoxContainer L_HBoxContainer
+ {
+ get
+ {
+ if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer(UiPanel, Instance.GetNode("HBoxContainer"));
+ return _L_HBoxContainer;
+ }
+ }
+ private HBoxContainer _L_HBoxContainer;
+
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.HBoxContainer2
+ ///
+ public HBoxContainer2 L_HBoxContainer2
+ {
+ get
+ {
+ if (_L_HBoxContainer2 == null) _L_HBoxContainer2 = new HBoxContainer2(UiPanel, Instance.GetNode("HBoxContainer2"));
+ return _L_HBoxContainer2;
+ }
+ }
+ private HBoxContainer2 _L_HBoxContainer2;
+
+ public VBoxContainer(EditorImportCombinationPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { }
+ public override VBoxContainer Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate());
+ }
+
+ ///
+ /// 类型: , 路径: EditorImportCombination.MarginContainer
+ ///
+ public class MarginContainer : UiNode
+ {
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: EditorImportCombination.VBoxContainer
+ ///
+ public VBoxContainer L_VBoxContainer
+ {
+ get
+ {
+ if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer(UiPanel, Instance.GetNode("VBoxContainer"));
+ return _L_VBoxContainer;
+ }
+ }
+ private VBoxContainer _L_VBoxContainer;
+
+ public MarginContainer(EditorImportCombinationPanel uiPanel, Godot.MarginContainer node) : base(uiPanel, node) { }
+ public override MarginContainer Clone() => new (UiPanel, (Godot.MarginContainer)Instance.Duplicate());
+ }
+
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer.NameLabel
+ ///
+ public NameLabel S_NameLabel => L_MarginContainer.L_VBoxContainer.L_HBoxContainer.L_NameLabel;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer.NameInput
+ ///
+ public NameInput S_NameInput => L_MarginContainer.L_VBoxContainer.L_HBoxContainer.L_NameInput;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer
+ ///
+ public HBoxContainer S_HBoxContainer => L_MarginContainer.L_VBoxContainer.L_HBoxContainer;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer2.PreviewLabel
+ ///
+ public PreviewLabel S_PreviewLabel => L_MarginContainer.L_VBoxContainer.L_HBoxContainer2.L_PreviewLabel;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer2.RemarkInput
+ ///
+ public RemarkInput S_RemarkInput => L_MarginContainer.L_VBoxContainer.L_HBoxContainer2.L_RemarkInput;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer.HBoxContainer2
+ ///
+ public HBoxContainer2 S_HBoxContainer2 => L_MarginContainer.L_VBoxContainer.L_HBoxContainer2;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: EditorImportCombination.MarginContainer.VBoxContainer
+ ///
+ public VBoxContainer S_VBoxContainer => L_MarginContainer.L_VBoxContainer;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: EditorImportCombination.MarginContainer
+ ///
+ public MarginContainer S_MarginContainer => L_MarginContainer;
+
+}
diff --git a/DungeonShooting_Godot/src/game/ui/editorImportCombination/EditorImportCombinationPanel.cs b/DungeonShooting_Godot/src/game/ui/editorImportCombination/EditorImportCombinationPanel.cs
new file mode 100644
index 0000000..2caeb49
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/ui/editorImportCombination/EditorImportCombinationPanel.cs
@@ -0,0 +1,18 @@
+using Godot;
+
+namespace UI.EditorImportCombination;
+
+public partial class EditorImportCombinationPanel : EditorImportCombination
+{
+
+ public override void OnCreateUi()
+ {
+
+ }
+
+ public override void OnDestroyUi()
+ {
+
+ }
+
+}
diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorCombination/TileSetEditorCombinationPanel.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorCombination/TileSetEditorCombinationPanel.cs
index 6a9e253..78f12e6 100644
--- a/DungeonShooting_Godot/src/game/ui/tileSetEditorCombination/TileSetEditorCombinationPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorCombination/TileSetEditorCombinationPanel.cs
@@ -18,6 +18,8 @@
AddEventListener(EventEnum.OnSetTileTexture, OnSetTileTexture);
//改变背景颜色事件
AddEventListener(EventEnum.OnSetTileSetBgColor, OnSetTileSetBgColor);
+
+
}
public override void OnShowUi()
diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorCombination/leftTop/TileEditCombination.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorCombination/leftTop/TileEditCombination.cs
index 751e698..72ff60b 100644
--- a/DungeonShooting_Godot/src/game/ui/tileSetEditorCombination/leftTop/TileEditCombination.cs
+++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorCombination/leftTop/TileEditCombination.cs
@@ -29,7 +29,6 @@
private bool _canvasDirty = false;
// -----------------------------------------------------------------------
-
public override void SetUiNode(IUiNode uiNode)
{
base.SetUiNode(uiNode);
@@ -170,11 +169,14 @@
if (size == Vector2.Zero)
{
EditorWindowManager.ShowTips("警告", "请先绘制组合图块!");
+ return;
}
else if (size == GameConfig.TileCellSizeVector2I)
{
EditorWindowManager.ShowTips("警告", "导入一格大小的组合图块没有任何意义!");
+ return;
}
+
}
//绘制笔刷