ソースを参照

复制关卡功能

wgl 7 ヶ月 前
コミット
c946b44d42

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

@@ -260,6 +260,18 @@ public class GameMapEditor : EditorWindow
 			doRepaint = false;
 			Repaint();
 		}
+
+		if (ev.type == EventType.KeyDown && ev.keyCode == KeyCode.C && ev.control)
+		{
+			CopyMap();
+			ev.Use();
+		}
+
+		if (ev.type == EventType.KeyDown && ev.keyCode == KeyCode.V && ev.control)
+		{
+			PasteMap();
+			ev.Use();
+		}
 	}
 
 	private void OnUnRedo()
@@ -2019,6 +2031,31 @@ public class GameMapEditor : EditorWindow
 		return res;
 	}
 
+	private void CopyMap()
+	{
+		if (asset == null || mapIdx < 0 || mapIdx >= asset.maps.Count) return;
+
+		GameMap map = asset.maps[mapIdx];
+		string mapJson = JsonUtility.ToJson(map);
+		EditorGUIUtility.systemCopyBuffer = mapJson;
+	}
+
+	private void PasteMap()
+	{
+		if (asset == null) return;
+
+		string mapJson = EditorGUIUtility.systemCopyBuffer;
+		if (string.IsNullOrEmpty(mapJson)) return;
+
+		GameMap newMap = JsonUtility.FromJson<GameMap>(mapJson);
+		if (newMap == null) return;
+
+		Undo.RecordObject(asset, "Paste Map");
+		asset.maps.Add(newMap);
+		mapIdx = asset.maps.Count - 1;
+		doRepaint = true;
+	}
+
 	#endregion
 	// ----------------------------------------------------------------------------------------------------------------
 }