diff --git a/DungeonShooting_Godot/prefab/ui/EditorTools.tscn b/DungeonShooting_Godot/prefab/ui/EditorTools.tscn
index 292c2c9..ea25f16 100644
--- a/DungeonShooting_Godot/prefab/ui/EditorTools.tscn
+++ b/DungeonShooting_Godot/prefab/ui/EditorTools.tscn
@@ -55,7 +55,7 @@
 text = "创建游戏Ui"
 
 [node name="LineEdit" type="LineEdit" parent="ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer3"]
-custom_minimum_size = Vector2(400, 0)
+custom_minimum_size = Vector2(250, 0)
 layout_mode = 2
 placeholder_text = "请输入ui名称"
 
@@ -97,7 +97,7 @@
 text = "创建地牢房间"
 
 [node name="RoomNameInput" type="LineEdit" parent="ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6"]
-custom_minimum_size = Vector2(400, 0)
+custom_minimum_size = Vector2(250, 0)
 layout_mode = 2
 placeholder_text = "请输入房间名称"
 
diff --git a/DungeonShooting_Godot/resource/map/RoomConfig.json b/DungeonShooting_Godot/resource/map/RoomConfig.json
index dac7d62..63ff048 100644
--- a/DungeonShooting_Godot/resource/map/RoomConfig.json
+++ b/DungeonShooting_Godot/resource/map/RoomConfig.json
@@ -33,7 +33,12 @@
         "ConfigPath": "res://resource/map/tiledata/testGroup/inlet/Room1.json"
       }
     ],
-    "OutletList": [],
+    "OutletList": [
+      {
+        "ScenePath": "res://resource/map/tileMaps/testGroup/outlet/Room1.tscn",
+        "ConfigPath": "res://resource/map/tiledata/testGroup/outlet/Room1.json"
+      }
+    ],
     "BossList": [],
     "RewardList": [],
     "ShopList": [],
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room1.tscn b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room1.tscn
index 38f57cb..14d20aa 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room1.tscn
+++ b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room1.tscn
@@ -9,6 +9,7 @@
 format = 2
 layer_0/tile_data = PackedInt32Array(-65539, 131072, 2, 196605, 131072, 7, 262141, 0, 8, 327677, 0, 8, 393213, 0, 8, 458749, 131072, 2, -65538, 131072, 2, 196606, 131072, 7, 262142, 0, 8, 327678, 0, 8, 393214, 0, 8, 458750, 131072, 2, -65537, 131072, 2, 196607, 131072, 7, 262143, 0, 8, 327679, 0, 8, 393215, 0, 8, 458751, 131072, 2, -131072, 131072, 2, 131072, 131072, 7, 196608, 0, 8, 262144, 0, 8, 327680, 0, 8, 393216, 131072, 2, -131071, 131072, 2, 131073, 131072, 7, 196609, 0, 8, 262145, 0, 8, 327681, 0, 8, 393217, 131072, 2, -131070, 131072, 2, 131074, 131072, 7, 393218, 131072, 2, -131069, 131072, 2, 131075, 131072, 7, 393219, 131072, 2, -131068, 131072, 2, 131076, 131072, 7, 393220, 131072, 2, -131067, 196608, 2, -65531, 196608, 3, 5, 196608, 3, 65541, 196608, 3, 131077, 196608, 7, 393221, 131072, 2, -131066, 0, 8, -65530, 0, 8, 6, 0, 8, 65542, 0, 8, 131078, 0, 8, 393222, 131072, 2, -131065, 0, 8, -65529, 0, 8, 7, 0, 8, 65543, 0, 8, 131079, 0, 8, 393223, 131072, 2, -131064, 0, 8, -65528, 0, 8, 8, 0, 8, 65544, 0, 8, 131080, 0, 8, 393224, 131072, 2, -131063, 65536, 3, -65527, 65536, 3, 9, 65536, 3, 65545, 65536, 3, 131081, 65536, 3, 393225, 851968, 2, -327690, 196608, 4, -262154, 196608, 3, -196618, 196608, 3, -131082, 196608, 3, -65546, 196608, 3, -10, 196608, 3, 65526, 196608, 3, 131062, 196608, 3, 196598, 196608, 3, 262134, 196608, 3, 327670, 196608, 3, 393206, 196608, 3, 458742, 720896, 2, -327689, 131072, 7, -262153, 0, 8, -196617, 0, 8, -131081, 0, 8, -65545, 0, 8, -9, 0, 8, 65527, 0, 8, 131063, 0, 8, 196599, 0, 8, 262135, 0, 8, 327671, 0, 8, 393207, 0, 8, 458743, 131072, 2, -327688, 131072, 7, -262152, 0, 8, -196616, 0, 8, -131080, 0, 8, -65544, 0, 8, -8, 0, 8, 65528, 0, 8, 131064, 0, 8, 196600, 0, 8, 262136, 0, 8, 327672, 0, 8, 393208, 0, 8, 458744, 131072, 2, -327687, 131072, 7, -262151, 0, 8, -196615, 0, 8, -131079, 0, 8, -65543, 0, 8, -7, 0, 8, 65529, 0, 8, 131065, 0, 8, 196601, 0, 8, 262137, 0, 8, 327673, 0, 8, 393209, 0, 8, 458745, 131072, 2, -327686, 131072, 7, -262150, 0, 8, -196614, 0, 8, -131078, 0, 8, -65542, 65536, 2, -6, 65536, 3, 65530, 65536, 3, 131066, 65536, 3, 196602, 65536, 7, 262138, 0, 8, 327674, 0, 8, 393210, 0, 8, 458746, 131072, 2, -327685, 131072, 7, -262149, 0, 8, -196613, 0, 8, -131077, 0, 8, -65541, 131072, 2, 196603, 131072, 7, 262139, 0, 8, 327675, 0, 8, 393211, 0, 8, 458747, 131072, 2, -327684, 131072, 7, -262148, 0, 8, -196612, 0, 8, -131076, 0, 8, -65540, 131072, 2, 196604, 131072, 7, 262140, 0, 8, 327676, 0, 8, 393212, 0, 8, 458748, 131072, 2, -327683, 131072, 7, -262147, 0, 8, -196611, 0, 8, -131075, 0, 8, -327682, 131072, 7, -262146, 0, 8, -196610, 0, 8, -131074, 0, 8, -327681, 131072, 7, -262145, 0, 8, -196609, 0, 8, -131073, 0, 8, -393216, 131072, 7, -327680, 0, 8, -262144, 0, 8, -196608, 0, 8, -393215, 131072, 7, -327679, 0, 8, -262143, 0, 8, -196607, 0, 8, -393214, 131072, 7, -327678, 0, 8, -262142, 0, 8, -196606, 0, 8, 196610, 0, 8, 262146, 0, 8, 327682, 0, 8, -393213, 131072, 7, -327677, 0, 8, -262141, 0, 8, -196605, 0, 8, 196611, 0, 8, 262147, 0, 8, 327683, 0, 8, -393212, 131072, 7, -327676, 0, 8, -262140, 0, 8, -196604, 0, 8, 196612, 0, 8, 262148, 0, 8, 327684, 0, 8, -393211, 131072, 7, -327675, 0, 8, -262139, 0, 8, -196603, 0, 8, 196613, 0, 8, 262149, 0, 8, 327685, 0, 8, -393210, 131072, 7, -327674, 0, 8, -262138, 0, 8, -196602, 0, 8, 196614, 0, 8, 262150, 0, 8, 327686, 0, 8, -393209, 131072, 7, -327673, 0, 8, -262137, 0, 8, -196601, 0, 8, 196615, 0, 8, 262151, 0, 8, 327687, 0, 8, -393208, 131072, 7, -327672, 0, 8, -262136, 0, 8, -196600, 0, 8, 196616, 0, 8, 262152, 0, 8, 327688, 0, 8, -393207, 65536, 4, -327671, 65536, 3, -262135, 65536, 3, -196599, 65536, 3, 196617, 65536, 3, 262153, 65536, 3, 327689, 65536, 3)
 script = ExtResource("1_wwejn")
+EnableEdit = true
 
 [node name="EnemyMark" type="Node2D" parent="."]
 position = Vector2(0, -56)
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/testGroup/outlet/Room1.tscn b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/outlet/Room1.tscn
new file mode 100644
index 0000000..2055eaf
--- /dev/null
+++ b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/outlet/Room1.tscn
@@ -0,0 +1,10 @@
+[gd_scene load_steps=3 format=3 uid="uid://d0klitsroayqh"]
+
+[ext_resource type="TileSet" uid="uid://b00g22o1cqhe8" path="res://resource/map/tileset/TileSet1.tres" id="1_fhl21"]
+[ext_resource type="Script" path="res://src/framework/map/DungeonRoomTemplate.cs" id="dungeonRoomTemplate"]
+
+[node name="Room1" type="TileMap"]
+tile_set = ExtResource("1_fhl21")
+format = 2
+layer_0/tile_data = PackedInt32Array(327688, 0, 8, 262152, 0, 8, 196616, 0, 8, 131080, 0, 8, 65544, 0, 8, 8, 0, 8, -65528, 0, 8, -131064, 0, 8, -196600, 0, 8, 327687, 0, 8, 262151, 0, 8, 196615, 0, 8, 131079, 0, 8, 65543, 0, 8, 7, 0, 8, -65529, 0, 8, -131065, 0, 8, -196601, 0, 8, 327686, 0, 8, 262150, 0, 8, 196614, 0, 8, 131078, 0, 8, 65542, 0, 8, 6, 0, 8, -65530, 0, 8, -131066, 0, 8, -196602, 0, 8, 327685, 0, 8, 262149, 0, 8, 196613, 0, 8, 131077, 0, 8, 65541, 0, 8, 5, 0, 8, -65531, 0, 8, -131067, 0, 8, -196603, 0, 8, 327684, 0, 8, 262148, 0, 8, 196612, 0, 8, 131076, 0, 8, 65540, 0, 8, 4, 0, 8, -65532, 0, 8, -131068, 0, 8, -196604, 0, 8, 327683, 0, 8, 262147, 0, 8, 196611, 0, 8, 131075, 0, 8, 65539, 0, 8, 3, 0, 8, -65533, 0, 8, -131069, 0, 8, -196605, 0, 8, 327682, 0, 8, 262146, 0, 8, 196610, 0, 8, 131074, 0, 8, 65538, 0, 8, 2, 0, 8, -65534, 0, 8, -131070, 0, 8, -196606, 0, 8, 327681, 0, 8, 262145, 0, 8, 196609, 0, 8, 131073, 0, 8, 65537, 0, 8, 1, 0, 8, -65535, 0, 8, -131071, 0, 8, -196607, 0, 8, 327680, 0, 8, 262144, 0, 8, 196608, 0, 8, 131072, 0, 8, 65536, 0, 8, 0, 0, 8, -65536, 0, 8, -131072, 0, 8, -196608, 0, 8, 393215, 0, 8, 327679, 0, 8, 262143, 0, 8, 196607, 0, 8, 131071, 0, 8, 65535, 0, 8, -1, 0, 8, -65537, 0, 8, -131073, 0, 8, 393214, 0, 8, 327678, 0, 8, 262142, 0, 8, 196606, 0, 8, 131070, 0, 8, 65534, 0, 8, -2, 0, 8, -65538, 0, 8, -131074, 0, 8, 393213, 0, 8, 327677, 0, 8, 262141, 0, 8, 196605, 0, 8, 131069, 0, 8, 65533, 0, 8, -3, 0, 8, -65539, 0, 8, -131075, 0, 8, -65540, 196608, 3, -131076, 196608, 3, -196612, 196608, 4, -196611, 131072, 7, -196610, 131072, 7, -4, 196608, 3, 65532, 196608, 3, 131068, 196608, 3, 196604, 196608, 3, 262140, 196608, 3, 327676, 196608, 3, 393212, 196608, 3, 458750, 131072, 2, 458749, 131072, 2, 458748, 720896, 2, -196609, 131072, 7, 458751, 131072, 2, -262144, 131072, 7, 393216, 131072, 2, -262143, 131072, 7, 393217, 131072, 2, -262142, 131072, 7, 393218, 131072, 2, -262141, 131072, 7, 393219, 131072, 2, -262140, 131072, 7, 393220, 131072, 2, -262139, 131072, 7, 393221, 131072, 2, -262138, 131072, 7, 393222, 131072, 2, -262137, 131072, 7, 393223, 131072, 2, -262136, 131072, 7, 393224, 131072, 2, -196599, 65536, 3, -131063, 65536, 3, -262135, 65536, 4, -65527, 65536, 3, 9, 65536, 3, 65545, 65536, 3, 131081, 65536, 3, 196617, 65536, 3, 262153, 65536, 3, 327689, 65536, 3, 393225, 851968, 2)
+script = ExtResource("dungeonRoomTemplate")
diff --git a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room1.json b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room1.json
index a5f1242..291ce56 100644
--- a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room1.json
+++ b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room1.json
@@ -7,13 +7,7 @@
     "X": 20,
     "Y": 13
   },
-  "DoorAreaInfos": [
-    {
-      "Direction": 3,
-      "Start": 32,
-      "End": 256
-    }
-  ],
+  "DoorAreaInfos": [],
   "NavigationList": [
     {
       "Type": 0,
diff --git a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room2.json b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room2.json
index 64e7444..41f3391 100644
--- a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room2.json
+++ b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room2.json
@@ -7,7 +7,28 @@
     "X": 19,
     "Y": 12
   },
-  "DoorAreaInfos": [],
+  "DoorAreaInfos": [
+    {
+      "Direction": 3,
+      "Start": 128,
+      "End": 288
+    },
+    {
+      "Direction": 1,
+      "Start": 16,
+      "End": 176
+    },
+    {
+      "Direction": 2,
+      "Start": 16,
+      "End": 176
+    },
+    {
+      "Direction": 0,
+      "Start": 16,
+      "End": 176
+    }
+  ],
   "NavigationList": [
     {
       "Type": 0,
diff --git a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room4.json b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room4.json
index 52b1c8d..2c4e99b 100644
--- a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room4.json
+++ b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room4.json
@@ -7,7 +7,38 @@
     "X": 38,
     "Y": 24
   },
-  "DoorAreaInfos": [],
+  "DoorAreaInfos": [
+    {
+      "Direction": 3,
+      "Start": 16,
+      "End": 240
+    },
+    {
+      "Direction": 3,
+      "Start": 368,
+      "End": 512
+    },
+    {
+      "Direction": 0,
+      "Start": 96,
+      "End": 288
+    },
+    {
+      "Direction": 2,
+      "Start": 368,
+      "End": 512
+    },
+    {
+      "Direction": 2,
+      "Start": 96,
+      "End": 240
+    },
+    {
+      "Direction": 1,
+      "Start": 16,
+      "End": 288
+    }
+  ],
   "NavigationList": [
     {
       "Type": 0,
diff --git a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room5.json b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room5.json
index 3dcecba..0473260 100644
--- a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room5.json
+++ b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room5.json
@@ -7,7 +7,28 @@
     "X": 12,
     "Y": 12
   },
-  "DoorAreaInfos": [],
+  "DoorAreaInfos": [
+    {
+      "Direction": 3,
+      "Start": 64,
+      "End": 128
+    },
+    {
+      "Direction": 0,
+      "Start": 64,
+      "End": 128
+    },
+    {
+      "Direction": 2,
+      "Start": 64,
+      "End": 128
+    },
+    {
+      "Direction": 1,
+      "Start": 64,
+      "End": 128
+    }
+  ],
   "NavigationList": [
     {
       "Type": 0,
diff --git a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room6.json b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room6.json
index 1ee451d..ecf93c7 100644
--- a/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room6.json
+++ b/DungeonShooting_Godot/resource/map/tiledata/testGroup/battle/Room6.json
@@ -7,7 +7,28 @@
     "X": 14,
     "Y": 12
   },
-  "DoorAreaInfos": [],
+  "DoorAreaInfos": [
+    {
+      "Direction": 3,
+      "Start": 16,
+      "End": 144
+    },
+    {
+      "Direction": 0,
+      "Start": 80,
+      "End": 176
+    },
+    {
+      "Direction": 2,
+      "Start": 112,
+      "End": 208
+    },
+    {
+      "Direction": 1,
+      "Start": 16,
+      "End": 112
+    }
+  ],
   "NavigationList": [
     {
       "Type": 0,
diff --git a/DungeonShooting_Godot/resource/map/tiledata/testGroup/outlet/Room1.json b/DungeonShooting_Godot/resource/map/tiledata/testGroup/outlet/Room1.json
new file mode 100644
index 0000000..794ba12
--- /dev/null
+++ b/DungeonShooting_Godot/resource/map/tiledata/testGroup/outlet/Room1.json
@@ -0,0 +1,37 @@
+{
+  "Position": {
+    "X": -4,
+    "Y": -4
+  },
+  "Size": {
+    "X": 14,
+    "Y": 11
+  },
+  "DoorAreaInfos": [],
+  "NavigationList": [
+    {
+      "Type": 0,
+      "Points": [
+        {
+          "X": -40,
+          "Y": -40
+        },
+        {
+          "X": 136,
+          "Y": -40
+        },
+        {
+          "X": 136,
+          "Y": 88
+        },
+        {
+          "X": -40,
+          "Y": 88
+        }
+      ]
+    }
+  ],
+  "GroupName": "testGroup",
+  "RoomType": 2,
+  "FileName": "Room1"
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/theme/mainTheme.tres b/DungeonShooting_Godot/resource/theme/mainTheme.tres
index c36431c..1d329a0 100644
--- a/DungeonShooting_Godot/resource/theme/mainTheme.tres
+++ b/DungeonShooting_Godot/resource/theme/mainTheme.tres
@@ -352,7 +352,7 @@
 
 [sub_resource type="ImageTexture" id="58"]
 
-[sub_resource type="Image" id="Image_56vuh"]
+[sub_resource type="Image" id="Image_hjw7m"]
 data = {
 "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 "format": "RGBA8",
@@ -362,7 +362,7 @@
 }
 
 [sub_resource type="ImageTexture" id="60"]
-image = SubResource("Image_56vuh")
+image = SubResource("Image_hjw7m")
 
 [sub_resource type="StyleBoxTexture" id="61"]
 content_margin_left = 2.0
@@ -372,7 +372,7 @@
 texture = SubResource("60")
 region_rect = Rect2(0, 0, 12, 12)
 
-[sub_resource type="Image" id="Image_owql0"]
+[sub_resource type="Image" id="Image_ak1j1"]
 data = {
 "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 "format": "RGBA8",
@@ -382,7 +382,7 @@
 }
 
 [sub_resource type="ImageTexture" id="63"]
-image = SubResource("Image_owql0")
+image = SubResource("Image_ak1j1")
 
 [sub_resource type="StyleBoxTexture" id="64"]
 content_margin_left = 2.0
@@ -392,7 +392,7 @@
 texture = SubResource("63")
 region_rect = Rect2(0, 0, 12, 12)
 
-[sub_resource type="Image" id="Image_f3n08"]
+[sub_resource type="Image" id="Image_8tr7d"]
 data = {
 "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 "format": "RGBA8",
@@ -402,7 +402,7 @@
 }
 
 [sub_resource type="ImageTexture" id="66"]
-image = SubResource("Image_f3n08")
+image = SubResource("Image_8tr7d")
 
 [sub_resource type="StyleBoxTexture" id="67"]
 content_margin_left = 2.0
@@ -412,7 +412,7 @@
 texture = SubResource("66")
 region_rect = Rect2(0, 0, 12, 12)
 
-[sub_resource type="Image" id="Image_am8gf"]
+[sub_resource type="Image" id="Image_d01hu"]
 data = {
 "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 "format": "RGBA8",
@@ -422,7 +422,7 @@
 }
 
 [sub_resource type="ImageTexture" id="69"]
-image = SubResource("Image_am8gf")
+image = SubResource("Image_d01hu")
 
 [sub_resource type="StyleBoxTexture" id="70"]
 content_margin_left = 0.0
@@ -446,7 +446,7 @@
 content_margin_right = 4.0
 content_margin_bottom = 4.0
 
-[sub_resource type="Image" id="Image_p4t5b"]
+[sub_resource type="Image" id="Image_5ym1c"]
 data = {
 "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 228, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 228, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 18, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 17, 255, 255, 255, 186, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 191, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 186, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 189, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 77, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 77, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 "format": "RGBA8",
@@ -456,7 +456,7 @@
 }
 
 [sub_resource type="ImageTexture" id="56"]
-image = SubResource("Image_p4t5b")
+image = SubResource("Image_5ym1c")
 
 [sub_resource type="StyleBoxFlat" id="57"]
 content_margin_left = 6.0
diff --git a/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs b/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs
index f5d7616..6fe35e7 100644
--- a/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs
+++ b/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs
@@ -89,14 +89,14 @@
         {
             throw new Exception("当前组'" + groupName + "'中没有起始房间, 不能生成地牢!");
         }
-        // else if (_roomGroup.OutletList.Count == 0)
-        // {
-        //     throw new Exception("当前组'" + groupName + "'中没有结束房间, 不能生成地牢!");
-        // }
-        // else if (_roomGroup.BattleList.Count == 0)
-        // {
-        //     throw new Exception("当前组'" + groupName + "'中没有战斗房间, 不能生成地牢!");
-        // }
+        else if (_roomGroup.OutletList.Count == 0)
+        {
+            throw new Exception("当前组'" + groupName + "'中没有结束房间, 不能生成地牢!");
+        }
+        else if (_roomGroup.BattleList.Count == 0)
+        {
+            throw new Exception("当前组'" + groupName + "'中没有战斗房间, 不能生成地牢!");
+        }
     }
     
     /// <summary>
diff --git a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs
index 2817166..398a07f 100644
--- a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs
+++ b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs
@@ -64,6 +64,12 @@
 
     public override void _Process(double delta)
     {
+#if TOOLS
+        if (Engine.IsEditorHint())
+        {
+            return;
+        }
+#endif
         if (_isOver)
         {
             _overTimer += (float)delta;