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().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; // } //} //}