Unity 5でUI画像のマウスオーバーを検出する方法は?


9

移動してズームインおよびズームアウトするように設定した画像があります。問題は、ズームはシーンのどこからでも実行できることですが、マウスを画像の上に置いたときにのみズームしたいのです。OnMouseEnter、OnMouseOver、イベントトリガー、コライダーなし、コライダー付き、トリガーコライダー付きの3つすべて、および画像自体と空のゲームオブジェクトでそれらすべてを使用しようとしました。しかし、それらのどれもうまくいっていません...だから私は絶対に困惑しています...誰かがここで助けてくれませんか!

これが私のスクリプトです:

    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

インターフェースを実装し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.