diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json index 6553288..df10eda 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json +++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json @@ -1 +1 @@ -[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":false,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":40,"Y":-10},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-2,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":20,"Y":94},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0014","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-14,"Y":97},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0011","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":9,"Y":-7},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-41,"Y":61},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0016","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":46,"Y":112},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0016","CurrAmmon":"10","ResidueAmmo":"10"},"Altitude":0,"VerticalSpeed":0}]}]]}] \ No newline at end of file +[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":false,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":40,"Y":-10},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-2,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":20,"Y":94},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0014","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-14,"Y":97},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0011","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":9,"Y":-7},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-41,"Y":61},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0016","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]}]]}] \ No newline at end of file diff --git a/DungeonShooting_Godot/scene/Hall.tscn b/DungeonShooting_Godot/scene/Hall.tscn index 1a496c4..c912614 100644 --- a/DungeonShooting_Godot/scene/Hall.tscn +++ b/DungeonShooting_Godot/scene/Hall.tscn @@ -1,36 +1,54 @@ -[gd_scene load_steps=4 format=3 uid="uid://c2hynqudkykxl"] +[gd_scene load_steps=6 format=3 uid="uid://c2hynqudkykxl"] [ext_resource type="PackedScene" uid="uid://bqf2vks5ggnsp" path="res://scene/World.tscn" id="1_31od0"] [ext_resource type="Script" path="res://src/game/hall/Hall.cs" id="2_43fdu"] [ext_resource type="Texture2D" uid="uid://uhhfgdhpk7i4" path="res://icon.png" id="3_3cr4y"] +[ext_resource type="Script" path="res://src/game/hall/DungeonEntrance.cs" id="3_t3my6"] -[node name="Hall" instance=ExtResource("1_31od0")] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ru8u4"] +size = Vector2(122, 116) + +[node name="Hall" node_paths=PackedStringArray("BirthMark") instance=ExtResource("1_31od0")] script = ExtResource("2_43fdu") +BirthMark = NodePath("BirthMark") -[node name="Icon" type="Sprite2D" parent="." index="1"] -position = Vector2(110, 85) +[node name="DungeonEntrance" type="Area2D" parent="." index="1"] +position = Vector2(174, 117) +collision_layer = 0 +collision_mask = 8 +monitorable = false +script = ExtResource("3_t3my6") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="DungeonEntrance" index="0"] +shape = SubResource("RectangleShape2D_ru8u4") + +[node name="Icon" type="Sprite2D" parent="DungeonEntrance" index="1"] +modulate = Color(1, 0, 0, 1) texture = ExtResource("3_3cr4y") -[node name="Icon2" type="Sprite2D" parent="." index="2"] +[node name="BirthMark" type="Marker2D" parent="." index="2"] +position = Vector2(271, -130) + +[node name="Icon2" type="Sprite2D" parent="." index="3"] position = Vector2(156, 248) texture = ExtResource("3_3cr4y") -[node name="Icon3" type="Sprite2D" parent="." index="3"] +[node name="Icon3" type="Sprite2D" parent="." index="4"] position = Vector2(404, 52) texture = ExtResource("3_3cr4y") -[node name="Icon4" type="Sprite2D" parent="." index="4"] +[node name="Icon4" type="Sprite2D" parent="." index="5"] position = Vector2(-193, 98) texture = ExtResource("3_3cr4y") -[node name="Icon5" type="Sprite2D" parent="." index="5"] +[node name="Icon5" type="Sprite2D" parent="." index="6"] position = Vector2(-150, -173) texture = ExtResource("3_3cr4y") -[node name="Icon6" type="Sprite2D" parent="." index="6"] +[node name="Icon6" type="Sprite2D" parent="." index="7"] position = Vector2(230, -270) texture = ExtResource("3_3cr4y") -[node name="Icon7" type="Sprite2D" parent="." index="7"] +[node name="Icon7" type="Sprite2D" parent="." index="8"] position = Vector2(269, -134) texture = ExtResource("3_3cr4y") diff --git a/DungeonShooting_Godot/src/game/hall/DungeonEntrance.cs b/DungeonShooting_Godot/src/game/hall/DungeonEntrance.cs new file mode 100644 index 0000000..59b4665 --- /dev/null +++ b/DungeonShooting_Godot/src/game/hall/DungeonEntrance.cs @@ -0,0 +1,33 @@ +using Godot; + +/// +/// 地牢入口节点 +/// +public partial class DungeonEntrance : Area2D +{ + public override void _Ready() + { + BodyEntered += OnBodyEntered; + } + + private void OnBodyEntered(Node2D body) + { + if (body is Player) + { + GameApplication.Instance.DungeonManager.ExitHall(() => + { + // 验证该组是否满足生成地牢的条件 + var config = GameApplication.Instance.DungeonConfig; + var result = DungeonManager.CheckDungeon(config.GroupName); + if (result.HasError) + { + EditorWindowManager.ShowTips("警告", "当前组'" + config.GroupName + "'" + result.ErrorMessage + ", 不能生成地牢!"); + } + else + { + GameApplication.Instance.DungeonManager.LoadDungeon(config); + } + }); + } + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/hall/Hall.cs b/DungeonShooting_Godot/src/game/hall/Hall.cs index 23e4287..836e9db 100644 --- a/DungeonShooting_Godot/src/game/hall/Hall.cs +++ b/DungeonShooting_Godot/src/game/hall/Hall.cs @@ -6,6 +6,15 @@ /// public partial class Hall : World { + /// + /// 玩家出生标记 + /// + [Export] + public Marker2D BirthMark; + + /// + /// 房间数据, 该数据时虚拟出来的, 并不是配置文件读取出来的 + /// public RoomInfo RoomInfo { get; set; } public override void _Ready() diff --git a/DungeonShooting_Godot/src/game/room/DungeonManager.cs b/DungeonShooting_Godot/src/game/room/DungeonManager.cs index 8a73575..11195d7 100644 --- a/DungeonShooting_Godot/src/game/room/DungeonManager.cs +++ b/DungeonShooting_Godot/src/game/room/DungeonManager.cs @@ -1,8 +1,6 @@  using System; using System.Collections; -using System.Collections.Generic; -using System.Linq; using Godot; /// @@ -39,11 +37,6 @@ /// 当前使用的配置 /// public DungeonConfig CurrConfig { get; private set; } - - /// - /// 游戏大厅 - /// - public Hall Hall { get; private set; } /// /// 当前玩家所在游戏世界对象 @@ -73,30 +66,22 @@ } /// - /// 初始化游戏大厅 - /// - public void InitHall(SeedRandom random) - { - if (Hall != null) - { - return; - } - Hall = ResourceManager.LoadAndInstantiate(ResourcePath.scene_Hall_tscn); - Hall.InitRandomPool(random); - } - - /// /// 创建新的 World 对象, 相当于清理房间 /// - public World CreateNewWorld(SeedRandom random) + public World CreateNewWorld(SeedRandom random, string scenePath = ResourcePath.scene_World_tscn) { if (CurrWorld != null) { ClearWorld(); CurrWorld.QueueFree(); } - CurrWorld = ResourceManager.LoadAndInstantiate(ResourcePath.scene_World_tscn); - CurrWorld.InitLayer(); + CurrWorld = ResourceManager.LoadAndInstantiate(scenePath); + GameApplication.Instance.SceneRoot.AddChild(CurrWorld); + if (CurrWorld is not Hall) + { + CurrWorld.InitLayer(); + } + CurrWorld.InitRandomPool(random); return CurrWorld; } @@ -150,6 +135,11 @@ { GameApplication.Instance.StartCoroutine(RunLoadHallCoroutine(finish)); } + + public void ExitHall(Action finish = null) + { + GameApplication.Instance.StartCoroutine(RunExitHallCoroutine(finish)); + } /// /// 加载地牢 @@ -275,34 +265,18 @@ private IEnumerator RunLoadHallCoroutine(Action finish) { - if (Hall != null && CurrWorld == Hall) //本来就在大厅中 - { - yield break; - } //打开 loading UI UiManager.Open_Loading(); yield return 0; - InitHall(Utils.Random); - + + var hall = (Hall)CreateNewWorld(Utils.Random, ResourcePath.scene_Hall_tscn); yield return 0; - if (CurrWorld == null) //从主菜单进入大厅 - { - GameApplication.Instance.SceneRoot.AddChild(Hall); - CurrWorld = Hall; - } - else //从地牢中进入大厅 - { - DestroyWorld(); - GameApplication.Instance.SceneRoot.AddChild(Hall); - CurrWorld = Hall; - } - yield return 0; //创建房间数据 var roomInfo = new RoomInfo(0, DungeonRoomType.None, null); roomInfo.Size = new Vector2I(50, 50); roomInfo.Position = Vector2I.Zero; - Hall.RoomInfo = roomInfo; + hall.RoomInfo = roomInfo; yield return 0; //创建归属区域 @@ -310,39 +284,86 @@ affiliation.Name = "AffiliationArea_Hall"; affiliation.Init(roomInfo, new Rect2I(roomInfo.Position, roomInfo.Size * GameConfig.TileCellSize)); roomInfo.AffiliationArea = affiliation; - Hall.AffiliationAreaRoot.AddChild(affiliation); + hall.AffiliationAreaRoot.AddChild(affiliation); yield return 0; //静态渲染精灵根节点, 用于放置sprite var spriteRoot = new RoomStaticSprite(roomInfo); spriteRoot.Name = "SpriteRoot"; roomInfo.StaticSprite = spriteRoot; - Hall.StaticSpriteRoot.AddChild(spriteRoot); + hall.StaticSpriteRoot.AddChild(spriteRoot); + yield return 0; //静态精灵画布 var canvasSprite = new ImageCanvas(roomInfo.Size.X * GameConfig.TileCellSize, roomInfo.Size.Y * GameConfig.TileCellSize); canvasSprite.Position = roomInfo.Position; roomInfo.StaticImageCanvas = canvasSprite; roomInfo.StaticSprite.AddChild(canvasSprite); + yield return 0; //液体画布 var liquidCanvas = new LiquidCanvas(roomInfo, roomInfo.Size.X * GameConfig.TileCellSize, roomInfo.Size.Y * GameConfig.TileCellSize); liquidCanvas.Position = roomInfo.Position; roomInfo.LiquidCanvas = liquidCanvas; roomInfo.StaticSprite.AddChild(liquidCanvas); - yield return 0; //创建玩家 var player = ActivityObject.Create(ActivityObject.Ids.Id_role0001); player.Name = "Player"; + player.Position = hall.BirthMark.Position; player.PutDown(RoomLayerEnum.YSortLayer); + affiliation.InsertItem(player); Player.SetCurrentPlayer(player); player.WeaponPack.PickupItem(ActivityObject.Create(ActivityObject.Ids.Id_weapon0001)); GameApplication.Instance.Cursor.SetGuiMode(false); yield return 0; + + //打开游戏中的ui + UiManager.Open_RoomUI(); UiManager.Destroy_Loading(); + + if (finish != null) + { + finish(); + } } + + private IEnumerator RunExitHallCoroutine(Action finish) + { + //打开 loading UI + UiManager.Open_Loading(); + yield return 0; + + CurrWorld.Pause = true; + yield return 0; + + var hall = (Hall)CurrWorld; + hall.RoomInfo.Destroy(); + yield return 0; + + UiManager.Destroy_RoomUI(); + yield return 0; + Player.SetCurrentPlayer(null); + DestroyWorld(); + yield return 0; + FogMaskHandler.ClearRecordRoom(); + LiquidBrushManager.ClearData(); + BrushImageData.ClearBrushData(); + QueueRedraw(); + + //鼠标还原 + GameApplication.Instance.Cursor.SetGuiMode(true); + yield return 0; + + //关闭 loading UI + UiManager.Destroy_Loading(); + if (finish != null) + { + finish(); + } + } + //执行加载地牢协程 private IEnumerator RunLoadDungeonCoroutine(Action finish) @@ -474,7 +495,7 @@ AutoTileConfig = null; _dungeonGenerator = null; - UiManager.Hide_RoomUI(); + UiManager.Destroy_RoomUI(); yield return 0; Player.SetCurrentPlayer(null); DestroyWorld(); diff --git a/DungeonShooting_Godot/src/game/ui/main/MainPanel.cs b/DungeonShooting_Godot/src/game/ui/main/MainPanel.cs index 2468b16..bfabcbc 100644 --- a/DungeonShooting_Godot/src/game/ui/main/MainPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/main/MainPanel.cs @@ -21,19 +21,6 @@ { GameApplication.Instance.DungeonManager.LoadHall(); HideUi(); - - //验证该组是否满足生成地牢的条件 - // var config = GameApplication.Instance.DungeonConfig; - // var result = DungeonManager.CheckDungeon(config.GroupName); - // if (result.HasError) - // { - // EditorWindowManager.ShowTips("警告", "当前组'" + config.GroupName + "'" + result.ErrorMessage + ", 不能生成地牢!"); - // } - // else - // { - // GameApplication.Instance.DungeonManager.LoadDungeon(config); - // HideUi(); - // } } //退出游戏 diff --git a/DungeonShooting_Godot/src/game/ui/roomMap/RoomMapPanel.cs b/DungeonShooting_Godot/src/game/ui/roomMap/RoomMapPanel.cs index ca80d6c..59aced6 100644 --- a/DungeonShooting_Godot/src/game/ui/roomMap/RoomMapPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/roomMap/RoomMapPanel.cs @@ -229,6 +229,11 @@ private void InitMap() { var startRoom = GameApplication.Instance.DungeonManager.StartRoomInfo; + if (startRoom == null) + { + HideUi(); + return; + } startRoom.EachRoom(roomInfo => { //房间