//创建建筑 public void CreateOffice(int num) { //如果之前的建筑没有成功建造就删除 if (SelectBuilding != null) { Destroy(SelectBuilding.effect.gameObject); Destroy(SelectBuilding.gameObject); } ToggleEffectRange(); BuildingType type = (BuildingType)num; //创建建筑预制体,设定Building脚本的变量 SelectBuilding = Instantiate(BuildingPrefab, BuildingContent); SelectBuilding.BM = this; SelectBuilding.Type = type; //枚举第一位是0 //创建EffectRange并赋值 SelectBuilding.effect = Instantiate(BEPrefab, BuildingContent); SelectBuilding.effect.CurrentBuilding = SelectBuilding; //把控制面板放到新建筑Prefab旁边 ControlPanel.transform.position = SelectBuilding.transform.position; ControlPanel.SetActive(true); //确定名称 int DepNum = 1; for (int i = 0; i < ConstructedBuildings.Count; i++) { if (ConstructedBuildings[i].Type == type) { DepNum += 1; } } SelectBuilding.Text_DepName.text = SelectBuilding.Type.ToString() + DepNum; //设置尺寸 if (type == BuildingType.技术部门 || type == BuildingType.市场部门 || type == BuildingType.产品部门 || type == BuildingType.运营部门) { SelectBuilding.SetSize(2, 3); } else if (type == BuildingType.高管办公室 || type == BuildingType.人力资源部A || type == BuildingType.人力资源部B || type == BuildingType.摩房) { SelectBuilding.SetSize(2, 2); } else if (type == BuildingType.研发部门) { SelectBuilding.SetSize(2, 4); } else if (type == BuildingType.健身房) { SelectBuilding.SetSize(3, 3); } else if (type == BuildingType.目标修正小组 || type == BuildingType.档案管理室 || type == BuildingType.效能研究室 || type == BuildingType.财务部 || type == BuildingType.战略咨询部B || type == BuildingType.精确标准委员会 || type == BuildingType.高级财务部A || type == BuildingType.高级财务部B) { SelectBuilding.SetSize(2, 3); } }
// When left mouse up private void RealeaseSelection() { SelectionBox.gameObject.SetActive(false); _selection = false; // If selection made by box if (_boxSelection) { Vector2 min = SelectionBox.anchoredPosition - (SelectionBox.sizeDelta / 2); Vector2 max = SelectionBox.anchoredPosition + (SelectionBox.sizeDelta / 2); // If there are units SelectUnits?.Invoke(min, max, _selectedUnits); _boxSelection = false; ShowUnitsInfo(); } // If selection made by left mouse click else { // Drawing Raycast to detect if there is selectable object Vector3 worldPos = _manager.GameCamera.ScreenToWorldPoint(_startPos); RaycastHit2D hit = Physics2D.Raycast(worldPos, Vector3.back, Mathf.Infinity); Debug.DrawRay(worldPos, Vector3.forward, Color.blue, 10f); // Publishing selection request to buildings SelectBuilding?.Invoke(hit, _selectedBuildings); // If there is building if (_selectedBuildings.Count > 0) { int buildingIndex = _selectedBuildings[0].BuildingIndex; BuildingData buildingData = _manager.GameConfig.Buildings[buildingIndex]; _informationMenu.ShowBuildingInfo(buildingData); } // Else if there is unit else { // Publishing selection request to units SelectUnit?.Invoke(hit, _selectedUnits); ShowUnitsInfo(); } } }
public void RotateBuilding() { SelectBuilding.Rotate(); ControlPanel.transform.position = SelectBuilding.transform.position; }