? Поддерживает ли реализация OnPointerHandler? или, может быть, я должен использовать другой метод?

я хочу добиться: зубная щетка должна появляться там, где пользователь нажимает внутриBoxCollider A, включая пространство внутриBoxCollider B, Но, видимо, щелкнув внутриB не будет показывать зубную щетку (OnPointerDown не запускается).

Что я пробовал: Изменение порядка слоев.

Зубная щетка показана после того, как пользователь щелкнул внутри коллайдераA, но если пользователь щелкает внутри поля коллайдераB- зубная щетка не появится, а это значит,OnPointerDown не срабатывает.

Я думаю, что это из-за совпадения одногоBoxCollider2D внутри другогоBoxCollider2D, В моем случаеB внутриAЯ предполагаю, что это виновник, но я понятия не имею, как ее решить или, может быть, есть другой метод для реализацииOnPointerDown?

Я используюPerspective камера. но в этой сцене все элементы в одномz position который равен 0. Можно ли вызвать событие IPointerHander в каждом соответствующемBoxCollider2D ?

DragableObject.cs

Этот скрипт прикреплен к зубной щетке.BoxCollider2D А также принадлежит зубной щетке.

public void OnPointerDown(PointerEventData eventData)
{
    Debug.Log("pointer down");

    if (GetComponent<DragableObject>() == null)
        return;

    currentObject = GetComponent<DragableObject>();

    MeshRenderer renderer = GetComponent<MeshRenderer>();

    if (ShowOnTouch)
        ShowObject();

    // Store original state
    originalPosition = transform.position;
    originalOrderLayer = renderer.sortingOrder;
    // Snap to mouse
    Vector3 newPos = cam.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 30));
    newPos.z = 30;
    transform.position = newPos;

    if (BringToFront)
    {
        if (renderer != null)
        {
            renderer.sortingOrder = 90;
        }
    }

    ObjectActive.Invoke();
}
TargetListener.cs

Этот скрипт прикреплен кBoxCollider2D B.

public void OnPointerDown(PointerEventData eventData)
{
    for (int i = 0; i < Affectors.Count; i++) 
    {
        if (Affectors [i] == DragableObject.currentObject)
        {
            DragableObject.currentObject.OnEnterTarget(transform);

            ITriggerEffect[] iTrigger = GetComponents<ITriggerEffect>();

            for (int j = 0; j < iTrigger.Length; j++) 
            {
                Debug.Log("iTrigger enter");
                Debug.Log(iTrigger [j]);
                iTrigger [j].Execute(eventData, PointerState.Down);
            }
        }
        else
            continue;
    }
}

Если я нажму наA зубная щетка появится, кроме тех случаев, когда я нажимаю внутриB, Здесь журнал отладки.

ЭтоBoxCollider2D А прикреплен к, который является*Toothbrush сам вместе сdragable.cs скрипт.

ОБНОВЛЕНИЕ: Благодаря другим, кто отвечает, проблема стала более ясной для меня. НижеBoxCollider2D А иBoxCollider2D Б. У обоих из них есть сценарий, который имеет большинствоOnPointerHander, Как мне убедиться, что всеOnPointerHandler срабатывает на соответствующемBoxCollider2D ?.

Проблемы, которые у меня возникают:

OnPointerExit наA срабатывает при входе моего указателяB.если нажать внутриB ,OnPointerDown только срабатывает наB но нетA

Ответы на вопрос(2)

Ваш ответ на вопрос