該代碼有效,但是 onm ouseOver 函式是否有可能不會向控制臺發送垃圾郵件?我總是樂于接受改進 Thx 的建議。:3
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HoverButton : MonoBehaviour
{
private bool Hovering = false;
private void OnMouseOver()
{
Hovering = true;
}
void Update()
{
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if(Hovering)
{
Collider2D HoveringButton = Physics2D.OverlapPoint(mousePos);
if(HoveringButton)
{
Debug.Log("Hi");
}
}
}
}
uj5u.com熱心網友回復:
OnMouseOver 功能是否有可能不會向控制臺發送垃圾郵件
是的:不要每幀都記錄一些東西=>添加一些只記錄一次的條件檢查。
無論如何,您寧愿使用
private bool hovering;
private void OnMouseEnter()
{
hovering = true;
Debug.Log("Hi");
}
private void OnMouseExit()
{
hovering = false;
}
否則Hovering永遠不會被重置為假。
Physics2D.OverlapPoint似乎很多余,因為如果呼叫OnMouseEnter它已經意味著您當前的滑鼠位置與該物件的對撞機重疊。
如果- 無論出于何種原因 - 你仍然需要這樣做,你可以簡單地存盤當前的命中并進行比較,例如
private bool hovering;
private Collider2D currentHoveringButton;
private void Update()
{
if(!hovering) return;
var mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
var hoveringButton = Physics2D.OverlapPoint(mousePos);
if(hoveringButton && hoveringButton != currentHoveringButton)
{
Debug.Log("Hi");
}
currentHoveringButton = hoveringButton;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/435342.html
上一篇:unity,獲取UI按鈕的名稱
