วิธีการตรวจหาเม้าส์สำหรับภาพ UI ใน Unity 5


9

ฉันมีภาพที่ฉันได้ตั้งค่าเพื่อเลื่อนไปมาและซูมเข้าและออกจาก ปัญหาคือการซูมสามารถทำได้จากทุกที่ในฉาก แต่ฉันต้องการแค่ซูมเมื่อเมาส์อยู่เหนือภาพ ฉันได้ลองใช้ OnMouseEnter, OnMouseOver, ทริกเกอร์เหตุการณ์, ทั้งสามตัวที่ไม่มี collider, กับ collider, กับ collider trigger, และทั้งหมดที่อยู่บนภาพเองและบนวัตถุเกมที่ว่างเปล่า อย่างไรก็ตามไม่มีของเหล่านั้นทำงานได้ ... ดังนั้นฉันจึงนิ่งงันอย่างแน่นอน ... ใครช่วยฉันออกจากที่นี่!

นี่คือสคริปต์ของฉัน:

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

-1

ก่อนอื่นคุณควรกำหนดฟังก์ชั่น (เมธอด) ในสคริปต์ของคุณจากนั้นสร้างทริกเกอร์เหตุการณ์สำหรับภาพ (ด้วยเหตุการณ์ PointerEnter) และระบุฟังก์ชั่นนั้น

http://answers.unity3d.com/questions/783279/46-ui-how-to-detect-mouse-over-on-button.html#answer-783299

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.