Wie erkenne ich die Maus für ein UI-Bild in Unity 5?


9

Ich habe ein Bild, das ich eingerichtet habe, um mich zu bewegen und hinein- und herauszuzoomen. Das Problem ist, dass der Zoom von überall in der Szene ausgeführt werden kann, aber ich möchte nur, dass er zoomt, wenn die Maus über dem Bild schwebt. Ich habe versucht, OnMouseEnter, OnMouseOver, Ereignisauslöser zu verwenden, alle drei ohne Collider, mit einem Collider, mit einem Triggercollider und all das auf dem Bild selbst und auf einem leeren Spielobjekt. Jedoch hat keiner von denen funktioniert ... Also bin ich absolut ratlos ... Könnte mir hier jemand helfen!

Hier ist mein Skript:

    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;
    }

Antworten:


12

Sie können implementieren IPointerEnter und IPointerExitSchnittstellen erstellen und den Booleschen Wert für "Over State" beibehalten:

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;
    }
}

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.