簡體   English   中英

在Unity中檢測UI面板內掉線的問題

[英]Issue with detecting drop inside UI panel in Unity

我正在嘗試為正在開發的游戲制作拖放清單系統。 我正在使用IDropHandler接口來檢測IDropHandler 我還使用RectTransformUtility.RectangleContainsScreenPoint()函數來查看放置是否發生在UI面板中。

public void OnDrop(PointerEventData eventData)
{
     RectTransform itemPanel = transform as RectTransform;

     if (RectTransformUtility.RectangleContainsScreenPoint(itemPanel,eventData.position))
     {
          Debug.Log("dropped in box");
          AssignItem(dragDropInfo.GetDraggingItem().GetComponent<ItemPanel>().GetItemImage().GetItem());
          dragDropInfo.GetDraggingItem().GetComponent<ItemPanel>().GetItemImage().UnassignItem();
     }
}

這在大多數情況下都可以正常工作。 但是,似乎與UI的層次結構有關。 接受該丟棄,一切都會按預期進行。 當我將其放置在層次結構中較高的面板中時(即,將在我要放置的面板下面呈現的面板),它將停止接受該放置,並按照我期望的方式將其放置在面板之外。

我不知道為什么會這樣,對於提供的任何幫助將非常感謝。

UI元素具有Raycast Target屬性,您可以嘗試禁用不可交互的元素。

如果這不起作用,您還可以嘗試根據當前拖動的內容動態更改它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM