コード例 #1
0
 private void AddSubDevScripts(Transform childTransform, bool isJ1F1 = false)
 {
     if (isJ1F1)
     {
         recordTime1 = DateTime.Now;
     }
     for (int i = 0; i < childTransform.childCount; i++)
     {
         if (isJ1F1)
         {
             recordTime2 = DateTime.Now;
         }
         Transform child = childTransform.GetChild(i);
         if (isJ1F1)
         {
             FacilityDevController devController = child.gameObject.AddMissingComponent <FacilityDevController>();
             if (RoomFactory.Instance)
             {
                 RoomFactory.Instance.SaveStaticDevInfo(devController);
             }
         }
         MeshRenderer render = child.GetComponent <MeshRenderer>();
         if (render != null)
         {
             child.gameObject.AddMissingComponent <MeshCollider>();
             if (child.GetComponent <FacilityDevController>() == null && child.GetComponent <FacilityDevController>() == null)
             {
                 child.gameObject.AddMissingComponent <FacilityMeshTrigger>();
             }
         }
         AddSubDevScripts(child);
         //Debug.LogErrorFormat("AddSubDevCostTime:{0} ms", (DateTime.Now - recordTime2).TotalMilliseconds);
     }
     //Debug.LogErrorFormat("AddSubDevCostTime:{0} ms",(DateTime.Now-recordTime1).TotalMilliseconds);
 }
コード例 #2
0
    public void AddScprits(Transform deviceT)
    {
        int  childCount = deviceT.childCount;
        bool isJ1F1Devs = deviceT.name.StartsWith(J1F1StaticDev);//或者J1_F1_Devices_Loader,不小心改名了

        for (int i = 0; i < childCount; i++)
        {
            GameObject obj = deviceT.GetChild(i).gameObject;
            if (obj.name.Contains("Invalid"))
            {
                continue;
            }
            if (!isJ1F1Devs)
            {
                FacilityDevController devController = obj.AddMissingComponent <FacilityDevController>();
                if (RoomFactory.Instance)
                {
                    RoomFactory.Instance.SaveStaticDevInfo(devController);
                }
                MeshRenderer render = obj.transform.GetComponent <MeshRenderer>();
                if (render != null)
                {
                    MeshCollider meshCollider = obj.AddMissingComponent <MeshCollider>();
                }
            }
            AddSubDevScripts(obj.transform, isJ1F1Devs);
        }
    }
コード例 #3
0
 /// <summary>
 /// 添加子物体脚本
 /// </summary>
 /// <param name="childTransform"></param>
 IEnumerator AddSubDevScriptsCorutine(Transform childTransform, bool isJ1F1 = false, Action onComplete = null)
 {
     for (int i = 0; i < childTransform.childCount; i++)
     {
         Transform child = childTransform.GetChild(i);
         if (isJ1F1)
         {
             FacilityDevController devController = child.gameObject.AddMissingComponent <FacilityDevController>();
             if (RoomFactory.Instance)
             {
                 RoomFactory.Instance.SaveStaticDevInfo(devController);
             }
         }
         MeshRenderer render = child.GetComponent <MeshRenderer>();
         if (render != null)
         {
             child.gameObject.AddMissingComponent <MeshCollider>();
             if (child.GetComponent <FacilityDevController>() == null && child.GetComponent <FacilityDevController>() == null)
             {
                 child.gameObject.AddMissingComponent <FacilityMeshTrigger>();
             }
         }
         StartCoroutine(AddSubDevScriptsCorutine(child));
         yield return(null);
     }
     if (onComplete != null)
     {
         onComplete();
     }
 }
コード例 #4
0
    /// <summary>
    /// 显示设备信息
    /// </summary>
    private void ShowDevInfo()
    {
        Vector2    screenMiddlePos = new Vector2(Screen.width / 2, Screen.height / 2);
        Ray        ray             = Camera.main.ScreenPointToRay(screenMiddlePos);
        RaycastHit hitInfo;

        if (Physics.Raycast(ray, out hitInfo, maxDis))
        {
            FacilityDevController dev = hitInfo.transform.GetComponentInParent <FacilityDevController>();
            if (dev != null)
            {
                if (dev != lastDev)
                {
                    if (lastDev != null)
                    {
                        lastDev.SetMouseState(false);
                    }
                    dev.SetMouseState(true);
                    lastDev = dev;
                }
            }
            else if (lastDev != null)
            {
                lastDev.SetMouseState(false);
                lastDev = null;
            }
        }
    }
コード例 #5
0
    // Use this for initialization
    void Start()
    {
        Dev = transform.GetComponentInParent <FacilityDevController>();
        DoubleClickEventTrigger_u3d trigger = DoubleClickEventTrigger_u3d.Get(gameObject);

        trigger.onClick       = OnClick;
        trigger.onDoubleClick = OnDoubleClick;
    }
コード例 #6
0
 /// <summary>
 /// 通过检测点击,关闭UI
 /// </summary>
 private void HideUIByRaycast()
 {
     if (gameObject.activeInHierarchy)
     {
         if (IsClickUGUIorNGUI.Instance && IsClickUGUIorNGUI.Instance.isOverUI)
         {
             return;
         }
         if (Input.GetMouseButtonDown(0))
         {
             Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             RaycastHit hit;
             if (Physics.Raycast(ray, out hit, float.MaxValue))
             {
                 FacilityDevController dev = hit.transform.GetComponent <FacilityDevController>();
                 if (dev == null && CurrentMonitor != null)
                 {
                     CurrentMonitor.CloseUI();
                 }
             }
         }
     }
 }