void Start() { DoubleClickEventTrigger_u3d trigger = DoubleClickEventTrigger_u3d.Get(gameObject); trigger.onClick += OnClick; trigger.onDoubleClick += OnDoubleClick; AddBuildingTitle(); //gameObject.AddComponent<HighlighterOccluder>(); //InitBoxCollider(); InitParentNode(); if (FloorTween == null) { FloorTween = gameObject.GetComponent <BuildingFloorTweening>(); } if (NodeName.Contains("自然通风冷却塔")) { Transform da1 = transform.Find("冷却塔-1"); Transform da2 = transform.Find("冷却塔-2"); Transform tempTran = null; if (da1 != null) { for (int i = 0; i < da1.childCount; i++) { tempTran = da1.GetChild(i); if (tempTran.name.Contains("WateSplashes1")) { tempTran.gameObject.SetActive(false); } } } if (da2 != null) { for (int i = 0; i < da2.childCount; i++) { tempTran = da2.GetChild(i); if (tempTran.name.Contains("WateSplashes1")) { tempTran.gameObject.SetActive(false); } } } } }
private static List <BuildingController> CopyBuildingComponents(GameObject buildingObj, GameObject buildingCube, bool copyBoxCollider) { Debug.Log("CopyBuildingComponents " + buildingObj + "->" + buildingCube); //1.复制BuildingController //var buildingController = CopyComponent<BuildingController>(buildingObj, buildingCube); //if (buildingController!=null && buildingController.ParentNode != null) //{ // buildingController.ParentNode.ChildNodes.Add(buildingController); //} var buildingControllers = EditorHelper.CopyComponents <BuildingController>(buildingObj, buildingCube); foreach (var buildingController in buildingControllers) { if (buildingController.ParentNode == null) { buildingController.ParentNode = buildingController.transform.parent.GetComponent <DepNode>(); } if (buildingController.ParentNode == null)//D1-D4不一样,下面有几个子物体 { buildingController.ParentNode = buildingController.transform.parent.parent.GetComponent <DepNode>(); } if (buildingController.ParentNode != null) { buildingController.ParentNode.ChildNodes.Add(buildingController); } else { Debug.LogError("buildingController.ParentNode == null:" + buildingController); } } //2.复制Collider MeshCollider meshCollider = EditorHelper.CopyComponent <MeshCollider>(buildingObj, buildingCube); if (meshCollider != null) { MeshFilter meshFilter = buildingCube.GetComponent <MeshFilter>(); meshCollider.sharedMesh = meshFilter.sharedMesh; } if (copyBoxCollider) { //2.复制BoxCollider BoxCollider boxCollider = EditorHelper.CopyComponent <BoxCollider>(buildingObj, buildingCube); if (meshCollider != null) { BoxCollider meshFilter = buildingCube.GetComponent <BoxCollider>(); //meshCollider.sharedMesh = meshFilter.sharedMesh; } } //BoxCollider boxCollider = CopyComponent<BoxCollider>(buildingObj, buildingCube); //3.复制BuidlingInfoTarget BuidlingInfoTarget infoTarget = buildingObj.GetComponentInChildren <BuidlingInfoTarget>(); if (infoTarget != null) { var newInfoTarget = GameObject.Instantiate(infoTarget); newInfoTarget.transform.parent = buildingCube.transform; CopyBasicInfo(newInfoTarget.gameObject, infoTarget.gameObject); } //4.复制BuildingFloorTweening BuildingFloorTweening tweening = EditorHelper.CopyComponent <BuildingFloorTweening>(buildingObj, buildingCube); if (tweening != null) { for (int i = 0; i < tweening.FloorList.Count; i++) { GameObject floor = tweening.FloorList[i]; if (floor == null) { continue; } var floorName = floor.name; var floorNew = buildingCube.transform.GetChildByName(floorName); if (floorNew != null) { tweening.FloorList[i] = floorNew.gameObject; } else { if (floorName == "H3_Top") { var floorNew2 = buildingCube.transform.GetChildByName("H3_F2");//模型改名了 if (floorNew2 != null) { tweening.FloorList[i] = floorNew2.gameObject; } else { Debug.LogError("复制BuildingFloorTweening floorNew == null : H3_F2"); } } else { Debug.LogError("复制BuildingFloorTweening floorNew == null : " + floorName); } } } } //5.复制FloorCube List <Transform> floorCubes = CopyChildren(buildingObj, buildingCube, "FloorCube"); foreach (var floorCube in floorCubes) { BoxCollider collider = floorCube.GetComponent <BoxCollider>(); if (collider) { collider.enabled = false; } } //6.设置地板的MeshCollider和Layer var floors = buildingObj.transform.GetChildrenByLayer("Floor"); foreach (var floor in floors) { if (floor.name == "FloorCube") { continue; } if (floor.parent.name == "SameLocationFloor") { continue; } var floorNew = buildingCube.transform.GetChildByName(floor.name); if (floorNew == null) { if (floor.name == "H2_FW6") { var floorName = "H2_F2_FW6"; var floorNew2 = buildingCube.transform.GetChildByName(floorName); if (floorNew2 != null) { //var floorMeshCollider = floorNew2.gameObject.AddComponent<MeshCollider>(); floorNew2.gameObject.layer = floor.gameObject.layer; } else { Debug.LogError("设置地板的MeshCollider和Layer floorNew == null : " + floor.name + "," + buildingObj + "|" + floorName); } } else { Debug.LogError("设置地板的MeshCollider和Layer floorNew == null : " + floor.name + "," + buildingObj); } } else { //var floorMeshCollider = floorNew.gameObject.AddComponent<MeshCollider>(); floorNew.gameObject.layer = floor.gameObject.layer; } //MeshFilter meshFilter = floorNew.gameObject.GetComponent<MeshFilter>(); //floorMeshCollider.sharedMesh = meshFilter.sharedMesh; } //7.主厂房 拷贝SameLocationFloor CopyChildren(buildingObj, buildingCube, "SameLocationFloor", true); //8.复制静态设备脚本 if (buildingObj.GetComponent <FacilityDevController>() != null) { buildingCube.AddMissingComponent <FacilityDevController>(); } return(buildingControllers); }