Ver Fonte

储存原有生成时间数据

wgl há 7 meses atrás
pai
commit
35fd54c90b

+ 29 - 25
ActionTowerDefense/Assets/GameLevelEditor/GameMap/CoreScripts/Editor/GameMapEditor.cs

@@ -866,8 +866,8 @@ public class GameMapEditor : EditorWindow
 			EditorGUILayout.LabelField("Spawn Times", EditorStyles.boldLabel);
 			GUILayout.Space(5f);
 
-			//List<SpawnTime> spawnTimes = layer.spawnTimes;
-			List<SpawnTime> spawnTimes = new List<SpawnTime>();
+			List<SpawnTime> spawnTimes = layer.spawnTimes;
+			List<SpawnTime> newSpawnTimes = new List<SpawnTime>();
 			int[] grids = layer.grid;
 			for(int i = 0; i < grids.Length; i++)
             {
@@ -876,9 +876,9 @@ public class GameMapEditor : EditorWindow
 					continue;
                 }
 				SpawnTime spawnTime = new SpawnTime();
-				if (spawnTimes.Exists(x => x.id == grids[i]))
+				if (newSpawnTimes.Exists(x => x.id == grids[i]))
                 {
-					spawnTime = spawnTimes.First(x => x.id == grids[i]);
+					spawnTime = newSpawnTimes.First(x => x.id == grids[i]);
 					spawnTime.pos.Add(i);
                 }
                 else
@@ -886,34 +886,38 @@ public class GameMapEditor : EditorWindow
 					
 					spawnTime.id = grids[i];
 					spawnTime.pos = new List<int> { i};
-					spawnTimes.Add(spawnTime);
+					newSpawnTimes.Add(spawnTime);
                 }
 			}
+			
             for (int i = 0; i < spawnTimes.Count; i++)
             {
-                SpawnTime spawnTime = spawnTimes[i];
-                if (asset.tileAsset.GetTile(spawnTime.id) == null)
+				SpawnTime spawnTime = spawnTimes[i];
+				if (newSpawnTimes.Exists(x => x.id == spawnTime.id))
                 {
-                    for (int j = 0; j < spawnTime.pos.Count; j++)
-                    {
-                        layer.grid[spawnTime.pos[j]] = -1;
-                    }
-                    spawnTimes.RemoveAt(i);
-                    continue;
+					SpawnTime newSpawnTime = newSpawnTimes.First(x => x.id == grids[i]);
+					spawnTime.id = newSpawnTime.id;
+					spawnTime.pos = newSpawnTime.pos;
+
+					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);
+					spawnTime.num = EditorGUILayout.IntField("Number", spawnTime.num);
+					spawnTimes[i] = spawnTime;
+					if (GUILayout.Button("Remove"))
+					{
+						for (int j = 0; j < spawnTime.pos.Count; j++)
+						{
+							layer.grid[spawnTime.pos[j]] = -1;
+						}
+						spawnTimes.RemoveAt(i);
+					}
                 }
-                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);
-                spawnTime.num = EditorGUILayout.IntField("Number", spawnTime.num);
-                spawnTimes[i] = spawnTime;
-                if (GUILayout.Button("Remove"))
+                else
                 {
-                    for (int j = 0; j < spawnTime.pos.Count; j++)
-                    {
-                        layer.grid[spawnTime.pos[j]] = -1;
-                    }
-                    spawnTimes.RemoveAt(i);
-                }
+					spawnTimes.RemoveAt(i);
+				}
+
             }