Я пытаюсь создать простой сценарий перетаскивания для моей карточной игры. Я не могу понять, почему события не обнаруживаются.
Вещи, которые я пробовал:
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, я не получил сообщение отладки в своей консоли.
Я отредактировал вопрос, дайте мне знать, если мне нужно что-то проверить, большое спасибо
М-м-м. ждать. почему вы вообще думаете, что ваши публичные методы следует вызывать?
существует ряд интерфейсов, которые ваш сценарий должен реализовать, чтобы иметь возможность получать уведомления из системы событий. вот один из них, остальные тоже можно найти там docs.unity3d.com/2018.3/Documentation/ScriptReference/…
На самом деле я следовал этому уроку: youtube.com/… Я не понимаю, почему это сработало в видео, но не работает, когда я тестировал его в своем редакторе, отсюда и вопрос...
Видео содержит важную часть настройки триггера события. Это напрямую вызывает методы скрипта. У тебя тоже получилось как на видео?
@Morion, да, я прикрепил сценарий перетаскивания, а также настроил события BeginDrag и EndDrag с помощью функций StartDrag и EndDrag...





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