1. 使用Raycast
如果你的图片是在UI Canvas上,可以使用Raycast来检测鼠标点击是否在图片上。
using UnityEngine;
 using UnityEngine.EventSystems;
 using UnityEngine.UI;
public class ImageClickChecker : MonoBehaviour
 {
     public Image targetImage;
    void Update()
     {
         if (Input.GetMouseButtonDown(0))
         {
             if (IsPointerOverUIObject(targetImage.gameObject))
             {
                 Debug.Log("Mouse is over the image!");
             }
             else
             {
                 Debug.Log("Mouse is not over the image.");
             }
         }
     }
    private bool IsPointerOverUIObject(GameObject target)
     {
         PointerEventData pointerEventData = new PointerEventData(EventSystem.current);
         pointerEventData.position = Input.mousePosition;
        List<RaycastResult> results = new List<RaycastResult>();
         EventSystem.current.RaycastAll(pointerEventData, results);
        foreach (RaycastResult result in results)
         {
             if (result.gameObject == target)
             {
                 return true;
             }
         }
         return false;
     }
 }
  
2. 使用RectTransform Utility
另外一种方法是直接使用RectTransformUtility来进行坐标转换和检测。
using UnityEngine;
 using UnityEngine.UI;
public class ImageClickChecker : MonoBehaviour
 {
     public Image targetImage;
    void Update()
     {
         if (Input.GetMouseButtonDown(0))
         {
             if (IsMouseOverImage(targetImage))
             {
                 Debug.Log("Mouse is over the image!");
             }
             else
             {
                 Debug.Log("Mouse is not over the image.");
             }
         }
     }
    private bool IsMouseOverImage(Image image)
     {
         RectTransform rectTransform = image.GetComponent<RectTransform>();
         Vector2 localMousePosition = RectTransformUtility.ScreenPointToLocalPointInRectangle(
             rectTransform, Input.mousePosition, null, out Vector2 localPoint);
         return rectTransform.rect.Contains(localPoint);
     }
 }
  
3. 使用Collider和Physics Raycast
如果你的图片是3D对象,使用Collider和Physics Raycast可以更容易实现。
using UnityEngine;
public class ImageClickChecker : MonoBehaviour
 {
     void Update()
     {
         if (Input.GetMouseButtonDown(0))
         {
             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
             {
                 if (hit.collider != null && hit.collider.gameObject == this.gameObject)
                 {
                     Debug.Log("Mouse is over the image!");
                 }
                 else
                 {
                     Debug.Log("Mouse is not over the image.");
                 }
             }
         }
     }
 }
  
根据你的具体需求,选择适合的检测方法。如果你的图片在Canvas上,推荐使用第一种或第二种方法;如果你的图片是3D对象,推荐使用第三种方法。