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();
        }
    }
Esempio n. 2
0
    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);
    }