1. 程式人生 > >[Unity][UGUI][UI佈局]Tooltip事件閃爍BUG解決辦法

[Unity][UGUI][UI佈局]Tooltip事件閃爍BUG解決辦法

方法1:

OnPointerEnter 和 OnPointerExit 有點問題。即便是用延遲,還是 會 出現 快速 enter 和 exit事件同時馬上 發生的問題。

大概原因是 Tooltip的UI 離 觸發的UI 太近的原因。

因此 把 Tooltip 提示框 的距離 提供一個距離值,問題就解決了。

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;


public class Test_ItemTooltip : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler
{
    public GameObject go;

    public void OnPointerDown(PointerEventData eventData)
    {
    }
    /// <summary>
    /// 進入觸發顯示物品資訊
    /// </summary>
    /// <param name="eventData"></param>
    public void OnPointerEnter(PointerEventData eventData)
    {
        go.SetActive(true);
        go.GetComponent<RectTransform>().position = new Vector3(transform.position.x + ((go.GetComponent<RectTransform>().sizeDelta.x / 2) + 100),
            transform.position.y - ((go.GetComponent<RectTransform>().sizeDelta.y / 2) + 100)
            , 0);
    }
    /// <summary>
    /// 移除隱藏顯示
    /// </summary>
    /// <param name="eventData"></param>
    public void OnPointerExit(PointerEventData eventData)
    {
        go.SetActive(false);
    }
}

方法2:在OnPointerEnter 和 OnPointerExit 的基礎上,改變錨點pivot的座標。

按照參考文章2 的內容。

改變滑鼠懸浮 按鈕 的 錨點pivot為(0,1)

tooltip 提示框 的錨點pivot 為(1,0)

使得這兩個 UI 的位置錯開。

如果不能動態改變 pivot 錨點的座標。

就只能提前 設定好 pivot 錨點 座標 的物體。

參考文章:

2.Tooltip position

3.