EventSystem не регистрирует события BeginDrag и EndDrag, как заставить его регистрировать ввод мыши?

Я пытаюсь создать простой сценарий перетаскивания для моей карточной игры. Я не могу понять, почему события не обнаруживаются.

Вещи, которые я пробовал:

  1. Добавлено с использованием UnityEngine.EventSystems.
  2. Убедился, что в иерархии есть EventSystem.
  3. Добавлен PhysicsRaycaster 2D в основную камеру.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class DragAndDrop : MonoBehaviour
{
    public bool isDragging = false;
    // Start is called before the first frame update
    void Start()
    {
        
    }
    
    public void StartDrag()
    {
        isDragging = true;
        print("drag has begun");
    }

    public void EndDrag()
    {
        isDragging = false;
        print("drag ended");
    }

    // Update is called once per frame
    void Update()
    {
        if (isDragging)
        {
            transform.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
        }
    }
}

Однако операторы отладки не реагируют на мои щелчки. Как мне заставить это работать?

Обновлено: я прикрепил этот сценарий перетаскивания к префабу моей карты, в котором помимо моего сценария в разделе компонентов есть EventTrigger, BoxCollider2D и SpriteRenderer. Однако мое общедоступное логическое значение isDragged ничего не обнаруживает и не показывает галочку независимо от того, что я делаю с мышью...

Кроме того, я протестировал его на новом простом проекте. Это тоже не работает. Когда я попытался реализовать это, https://docs.unity3d.com/2018.3/Documentation/ScriptReference/EventSystems.IPointerDownHandler.html, я не получил сообщение отладки в своей консоли.

К какому объекту прикреплен этот скрипт? Какие еще компоненты прикреплены к тому же игровому объекту?

Morion 24.05.2024 09:07

Я отредактировал вопрос, дайте мне знать, если мне нужно что-то проверить, большое спасибо

algo 24.05.2024 12:18

М-м-м. ждать. почему вы вообще думаете, что ваши публичные методы следует вызывать?

Morion 24.05.2024 12:25

существует ряд интерфейсов, которые ваш сценарий должен реализовать, чтобы иметь возможность получать уведомления из системы событий. вот один из них, остальные тоже можно найти там docs.unity3d.com/2018.3/Documentation/ScriptReference/…

Morion 24.05.2024 12:27

На самом деле я следовал этому уроку: youtube.com/… Я не понимаю, почему это сработало в видео, но не работает, когда я тестировал его в своем редакторе, отсюда и вопрос...

algo 24.05.2024 17:29

Видео содержит важную часть настройки триггера события. Это напрямую вызывает методы скрипта. У тебя тоже получилось как на видео?

Morion 26.05.2024 16:27

@Morion, да, я прикрепил сценарий перетаскивания, а также настроил события BeginDrag и EndDrag с помощью функций StartDrag и EndDrag...

algo 27.05.2024 05:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Теперь это исправлено. Проблема заключалась в том, что в моей сцене были другие элементы пользовательского интерфейса (описание карты), которые каким-то образом блокировали рейкаст и приводили к его необнаружению.

Чтобы отключить его, я снял выделение с свойства цели raycast в TextMeshPro, и теперь оно работает...

Другие вопросы по теме