/// <summary> /// 刷新助手 /// </summary> public void OnRefresh() { _mouseRay.OnRefresh(); switch (TheControlMode) { case ControlMode.FreeControl: _mousePosition.OnRefresh(); _mouseRotation.OnRefresh(); break; } if (Main.m_Input.GetButtonDown(InputButtonType.MouseLeft)) { if (RayTarget != null) { if (_mouseClickTargets.ContainsKey(RayTarget)) { _mouseClickTargets[RayTarget]?.Invoke(); } } } if (Main.m_Input.GetButtonDown(InputButtonType.MouseLeftDoubleClick)) { if (RayTarget != null) { MouseRayTarget target = RayTarget as MouseRayTarget; if (target && target.IsDoubleClickFocus) { SetLookPoint(target.transform.position); } } } }
/// <summary> /// 刷新助手 /// </summary> public void OnRefresh() { _mouseRay.OnRefresh(); if (Mode == ControlMode.FreeControl) { _mousePosition.OnRefresh(); _mouseRotation.OnRefresh(); } if (Main.m_Input.GetButtonDown(InputButtonType.MouseLeft)) { if (RayTarget != null) { RayTarget.OnMouseClick.Invoke(); } } if (Main.m_Input.GetButtonDown(InputButtonType.MouseLeftDoubleClick)) { if (RayTarget != null) { MouseRayTarget target = RayTarget as MouseRayTarget; if (target && target.IsDoubleClickFocus) { SetLookPoint(target.transform.position); } } } }
/// <summary> /// 射线击中目标 /// </summary> private void RaycastHiting(MouseRayTarget target) { if (Target == target) { return; } if (Target) { switch (TriggerHighlighting) { case HighlightingType.Normal: Target.gameObject.CloseHighLight(true); break; case HighlightingType.Flash: Target.gameObject.CloseFlashHighLight(true); break; } Target = null; } Target = target; if (Target) { switch (TriggerHighlighting) { case HighlightingType.Normal: Target.gameObject.OpenHighLight(NormalColor); break; case HighlightingType.Flash: Target.gameObject.OpenFlashHighLight(FlashColor1, FlashColor2); break; } if (IsOpenPrompt) { if (RayHitImage && RayHitText) { RayHitImage.gameObject.SetActive(true); RayHitText.text = Target.Name; } } } else { if (IsOpenPrompt) { if (RayHitImage && RayHitText) { RayHitImage.gameObject.SetActive(false); RayHitText.text = ""; } } } }
private static void SetMouseRayTarget() { AddBoundsBoxCollider(); GameObject[] objs = Selection.gameObjects; for (int i = 0; i < objs.Length; i++) { Collider collider = objs[i].GetComponent <Collider>(); if (!collider) { collider = objs[i].AddComponent <BoxCollider>(); } collider.isTrigger = true; MouseRayTarget rayTarget = objs[i].GetComponent <MouseRayTarget>(); if (!rayTarget) { rayTarget = objs[i].AddComponent <MouseRayTarget>(); } rayTarget.Name = objs[i].name; } }