124 lines
3.2 KiB
C#
124 lines
3.2 KiB
C#
using Framework.Scripts.Runtime.Engine.Engine.Camera.UIMoveTarget;
|
||
using Framework.Scripts.Runtime.Engine.Engine.Camera;
|
||
using TMPro;
|
||
using UnityEngine;
|
||
using UnityEngine.EventSystems;
|
||
|
||
namespace DefaultNamespace
|
||
{
|
||
public class ToolsCameraComponent : MonoBehaviour
|
||
{
|
||
private IRaycastable _raycastComponent;
|
||
private IUIFollow _uiFollow;
|
||
|
||
|
||
public RectTransform ui;
|
||
|
||
|
||
private void Awake()
|
||
{
|
||
_raycastComponent = new CameraRaycastComponent();
|
||
_uiFollow = new CameraFollowComponent();
|
||
}
|
||
|
||
|
||
void OnEnable()
|
||
{
|
||
_raycastComponent.OnRaycastHit += HandleRaycastHit;
|
||
}
|
||
|
||
|
||
// 处理射线命中事件并打印物体名称
|
||
void HandleRaycastHit(RaycastHit hit)
|
||
{
|
||
if (!EventSystem.current.IsPointerOverGameObject())
|
||
{
|
||
if (hit.collider.CompareTag("Tools"))
|
||
{
|
||
Debug.Log("Raycast hit: " + hit.collider.name);
|
||
_uiFollow.FollowObject(hit.collider.transform, ui, Camera.main);
|
||
ui.gameObject.SetActive(true);
|
||
ui.transform.Find("Text").GetComponent<TMP_Text>().text = hit.transform.name;
|
||
}
|
||
else
|
||
{
|
||
ui.gameObject.SetActive(false);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ui.gameObject.SetActive(false);
|
||
}
|
||
}
|
||
|
||
|
||
void Update()
|
||
{
|
||
// 调用射线功能
|
||
_raycastComponent?.Raycast();
|
||
}
|
||
}
|
||
}
|
||
//{
|
||
// [SerializeField]
|
||
// private Camera mainCamera; // 主摄像机
|
||
// [SerializeField]
|
||
// private GameObject uiPanel; // UI Panel,负责显示物品信息
|
||
// [SerializeField]
|
||
// private TMP_Text itemNameText;
|
||
|
||
// private GameObject lastHoveredObject; // 记录上一次悬停的物体
|
||
|
||
// void Start()
|
||
// {
|
||
// uiPanel.SetActive(false);
|
||
// }
|
||
|
||
// void Update()
|
||
// {
|
||
// Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
|
||
// RaycastHit hit;
|
||
// bool raycast = Physics.Raycast(ray, out hit);
|
||
// if (raycast)
|
||
// {
|
||
// GameObject hitObject = hit.collider.gameObject;
|
||
|
||
// if (hitObject.CompareTag("Tools"))
|
||
// {
|
||
// if (hitObject != lastHoveredObject)
|
||
// {
|
||
// Debug.Log(hitObject.name);
|
||
// HandleHoverEnter(hitObject);
|
||
// lastHoveredObject = hitObject;
|
||
// }
|
||
|
||
// uiPanel.transform.position = Input.mousePosition;
|
||
// }
|
||
// }
|
||
// else
|
||
// {
|
||
// if (lastHoveredObject!=null)
|
||
// {
|
||
// HandleHoverExit();
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
// void HandleHoverEnter(GameObject hoverObject)
|
||
// {
|
||
// itemNameText.text = hoverObject.name;
|
||
// uiPanel.SetActive(true);
|
||
|
||
|
||
// }
|
||
|
||
// void HandleHoverExit()
|
||
// {
|
||
|
||
// uiPanel.SetActive(false);
|
||
// lastHoveredObject = null;
|
||
|
||
// }
|
||
//}
|
||
//}
|