Як виявити зображення миші на зображення інтерфейсу в Unity 5?


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

Ви можете реалізовувати IPointerEnter та IPointerExitінтерфейси та зберігати булеве значення для 'over state':

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.