Unity3D IPointerDownHandler на другом объекте

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

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

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

Что вы имеете в виду, добавляя класс к изображению?

Cid 26.05.2018 12:22

Сид, я имею в виду, что перетаскиваю класс (скрипт) на изображение в инспекторе Unity

user2698308 26.05.2018 12:25

Ну, в таком случае да, вы можете добавлять любые скрипты в игровые объекты.

Cid 26.05.2018 12:26

это будет отличаться от того, что мне нужно)

user2698308 26.05.2018 12:31

Ваш вопрос слишком широкий, да, вы можете сделать изображение общедоступным, да, вы можете реализовать OnPointerDown в скриптах (надеюсь)

Cid 26.05.2018 12:33

но как это сделать?

user2698308 26.05.2018 12:34

перетащите свой скрипт на игровой объект? Я не понимаю твой вопрос

Cid 26.05.2018 12:35

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

user2698308 26.05.2018 12:49
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
8
707
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

  1. Один на изображении, реализующий интерфейс IPointerDownHandler и вызывающий событие, чтобы ваш второй скрипт мог его прослушивать.
  2. Один ваш другой игровой объект, слушая событие, вызванное 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...}
}

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