Bagaimana cara mendeteksi mouse untuk gambar UI di Unity 5?


9

Saya memiliki gambar yang telah saya siapkan untuk bergerak dan memperbesar dan memperkecil. Masalahnya adalah zoom dapat dilakukan dari mana saja di tempat kejadian, tapi saya hanya ingin tampilannya ketika mouse melayang di atas gambar. Saya telah mencoba menggunakan OnMouseEnter, OnMouseOver, pemicu acara, ketiganya tanpa collider, dengan collider, dengan collider trigger, dan semua itu pada gambar itu sendiri dan pada objek game kosong. Namun tidak satupun dari mereka yang bekerja ... Jadi saya benar-benar bingung ... Bisakah seseorang membantu saya di sini!

Ini skrip saya:

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

Jawaban:


12

Anda dapat mengimplementasikan IPointerEnter dan IPointerExitmenghubungkan dan menyimpan boolean untuk '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;
    }
}

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.