Unity3D IPointerDownHandler на другом объекте - PullRequest
0 голосов
/ 26 мая 2018

У меня есть такой код

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Area : MonoBehaviour, IPointerDownHandler
{
    public Image Area;
    public void OnPointerDown(PointerEventData data){ //some code...}
}

Если я добавлю класс на изображение, он будет работать нормально, но я бы хотел добавить класс к объекту gameMaganer и установить для изображения общедоступное значение Area иполучить OnPointerDown на нем.Возможно ли это?

1 Ответ

0 голосов
/ 26 мая 2018

То, что вы пытаетесь сделать, невозможно только с одним скриптом.Вам нужно как минимум два сценария:

  1. Один на изображении, реализующий интерфейс IPointerDownHandler и инициирующий событие, чтобы ваш второй сценарий мог его прослушать
  2. Один один другойgameobject, слушающий событие, вызванное 1-м сценарием:

using UnityEngine;
using UnityEngine.EventSystems;

[System.Serializable]
public class PointerEvent : UnityEngine.Events.UnityEvent<PointerEventData> {} ;

public class PointerDownHandler : MonoBehaviour, IPointerDownHandler
{
    public PointerEvent OnPointerDownEvent ;
    public void OnPointerDown(PointerEventData data)
    {
        if( OnPointerDownEvent != null )
            OnPointerDownEvent.Invoke( data ) ;
    }
}

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Area : MonoBehaviour
{
    public PointerDownHandler PointerDownHandler;

    private void Start()
    {
        OnPointerDownEvent.AddListener( OnPointerDown ) ;
    }

    public void OnPointerDown(PointerEventData data){ //some code...}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...