Pārlūkot izejas kodu

修复删除图层已有怪物会报错问题

wgl 7 mēneši atpakaļ
vecāks
revīzija
12ed961a18

+ 9 - 0
ActionTowerDefense/Assets/GameLevelEditor/GameMap/CoreScripts/Editor/GameMapEditor.cs

@@ -870,6 +870,15 @@ public class GameMapEditor : EditorWindow
 			for(int i = 0; i < spawnTimes.Count; i++)
             {
 				SpawnTime spawnTime = spawnTimes[i];
+				if (asset.tileAsset.GetTile(spawnTime.id) == null) 
+				{
+					for (int j = 0; j < spawnTime.pos.Count; j++)
+					{
+						layer.grid[spawnTime.pos[j]] = -1;
+					}
+					spawnTimes.RemoveAt(i);
+					continue;
+				}
 				EditorGUILayout.LabelField($"{asset.tileAsset.GetTile(spawnTime.id).name} - {spawnTime.pos.Count}", EditorStyles.boldLabel);
 				spawnTime.startTime = EditorGUILayout.IntField("Start Time", spawnTime.startTime);
 				spawnTime.endTime = EditorGUILayout.IntField("End Time", spawnTime.endTime);

+ 9 - 1
ActionTowerDefense/Assets/GameLevelEditor/GameMap/CoreScripts/GameMapTilesAsset.cs

@@ -87,7 +87,15 @@ public class GameMapTilesAsset : ScriptableObject
 	public void RemoveTileAtIndex(int idx)
 	{
 		tiles.RemoveAt(idx);
-		if (tiles.Count == 0 && autoTiles.Count == 0) nextTileId = 1;
+		if (tiles.Count == 0 && autoTiles.Count == 0)
+		{
+			nextTileId = 1;
+		}
+        else
+        {
+			nextTileId--;
+
+		}
 		_cache = null;
 	}