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);
    }