Unity 5에서 UI 이미지에서 마우스 오버를 감지하는 방법은 무엇입니까?


9

이동 및 확대 / 축소하도록 설정 한 이미지가 있습니다. 문제는 장면의 어느 곳에서나 확대 / 축소를 수행 할 수 있지만 마우스가 이미지 위에있을 때만 확대 / 축소하고 싶습니다. OnMouseEnter, OnMouseOver, 이벤트 트리거, 충돌체가없는 세 가지, 충돌체, 트리거 충돌체 및 이미지 자체 및 빈 게임 오브젝트에서 모두 사용하려고했습니다. 그러나 그중 누구도 효과가 없었습니다 ... 그래서 나는 절대로 충격을 받았습니다 ... 누군가 나를 도와 줄 수 있습니까!

내 스크립트는 다음과 같습니다.

    private float zoom;
    public float zoomSpeed;
    public Image map;

    public float zoomMin;
    public float zoomMax;

    void Update () {
        zoom = (Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * zoomSpeed);
        map.transform.localScale += new Vector3(map.transform.localScale.x * zoom, map.transform.localScale.y * zoom, 0);
        Vector3 scale = map.transform.localScale;
        scale = new Vector3(Mathf.Clamp(map.transform.localScale.x, zoomMin, zoomMax), Mathf.Clamp(map.transform.localScale.y, zoomMin, zoomMax), 0);
        map.transform.localScale = scale;
    }

답변:


12

'over state'에 대해 구현 IPointerEnterIPointerExit인터페이스를 수행하고 부울을 유지할 수 있습니다 .

using System;
using UnityEngine;
using UnityEngine.EventSystems;

public class TestOver : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public bool isOver = false;

    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("Mouse enter");
        isOver = true;
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        Debug.Log("Mouse exit");
        isOver = false;
    }
}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.