private void GUI_CreateBuilding() { TerrainPieceInfo terrainPieceInfo = m_Scene.GetCurrentTerrainPieceInfo(); if (terrainPieceInfo == null) { return; } GUI_Title("地块建筑"); if (GUILayout.Button("创建建筑", GUILayout.Width(GUI_ButtonWidth))) { var dropdown = new BuildingDropdown(new AdvancedDropdownState()); dropdown.Show(new Rect(-200, -250, 400, 500)); } if (GUI_CreateBuilding_WaitCreateBuildingPathList.Count > 0) { for (int index = 0; index < GUI_CreateBuilding_WaitCreateBuildingPathList.Count; index++) { string filePath = GUI_CreateBuilding_WaitCreateBuildingPathList[index]; m_Scene.CreateBuilding(filePath); } GUI_CreateBuilding_WaitCreateBuildingPathList.Clear(); } //显示现有的 Dictionary <GameObject, TerrainPieceBuildingInfo> .Enumerator enumerator = terrainPieceInfo.ArtInfo.BuildingDict.GetEnumerator(); while (enumerator.MoveNext()) { GameObject gameObject = enumerator.Current.Key; Transform transform = gameObject.transform; TerrainPieceBuildingInfo terrainPieceBuildingInfo = enumerator.Current.Value; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(transform.name); if (GUILayout.Button("X", GUILayout.Width(GUI_ButtonWidth))) { GameObject.DestroyImmediate(gameObject); terrainPieceInfo.ArtInfo.BuildingDict.Remove(gameObject); break; } EditorGUILayout.EndHorizontal(); } }
public void CreateBuilding(string filePath) { TerrainPieceInfo terrainPieceInfo = GetCurrentTerrainPieceInfo(); GameObject buildingResource = m_Root.Tool.LoadResource <GameObject>(filePath); GameObject buildingGameObject = GameObject.Instantiate(buildingResource); Transform buildingTransfrom = buildingGameObject.transform; buildingTransfrom.SetParent(terrainPieceInfo.BuildingRootTransform); buildingTransfrom.localPosition = Vector3.zero; TerrainPieceBuildingInfo terrainPieceBuildingInfo = new TerrainPieceBuildingInfo(); terrainPieceBuildingInfo.ResourcePath = filePath; terrainPieceInfo.ArtInfo.BuildingDict.Add(buildingGameObject, terrainPieceBuildingInfo); }