3

How can I add an event trigger (for example, PointerDown) using just only a script? Specifically, I have an object that's generated by a script. I already added an EventTrigger component, but I'm unsure how to add the PointerDown event.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class spawn : MonoBehaviour {

    //
    int buatrandom;
    int jumlahrandom = 16 ;

    int objek1 ;
    int objek2 ;
    int objek3 ;

    int checkobjek;
    int checkobjekawal;

    string simpan1;
    string simpan2;
    string simpan3;

    public GameObject target1;
    public GameObject target2;
    public GameObject target3;

    public int [] simpannomorobject ;
    public GameObject[] nomorasset;

    public float speed =10f;
    public float berat = 1.0f;

    // Use this for initialization
    void Start () {
        simpannomorobject = new int[3]; 
        for (int i = 0; i < 2; i++) {
            buatrandom = Random.Range (0, jumlahrandom);
            simpannomorobject [i] = buatrandom;
            if (i > 0){
                if (i < 3) {
                    buatobjek ();
                }
            }
        }
    }

    void buatobjek (){
        objek1 = simpannomorobject [0];
        objek2 = simpannomorobject [1];
        objek3 = simpannomorobject [2];

        simpan1 = objek1.ToString();
        simpan2 = objek2.ToString();
        simpan3 = objek3.ToString();

        target1 = Instantiate (nomorasset [objek1], new Vector3 (0, 0, 3.0f), Quaternion.identity);
        target2 = Instantiate (nomorasset [objek2], new Vector3 (4.0f, 0, 0), Quaternion.Euler(0,90,0));
        target3 = Instantiate (nomorasset [objek3], new Vector3 (-4.0f, 0, 0), Quaternion.Euler(0,-90,0));

        target1.AddComponent<BoxCollider> ();
        target2.AddComponent<BoxCollider> ();
        target3.AddComponent<BoxCollider> ();

        target1.AddComponent<EventTrigger> ();
        target2.AddComponent<EventTrigger> ();
        target3.AddComponent<EventTrigger> ();

        target1.tag = simpan1;
        target2.tag = simpan2;
        target3.tag = simpan3;

            
    }

    // Update is called once per frame
    void Update () {
        target1.transform.Rotate(0,100* Time.deltaTime,0);
        target2.transform.Rotate(0,100* Time.deltaTime,0);
        target3.transform.Rotate(0,100* Time.deltaTime,0);
    }



}

2 Answers 2

2
void buatobjek (){
    // ....
    EventTrigger eventTrigger1 = target1.AddComponent<EventTrigger> ();
    EventTrigger.Entry entry = new EventTrigger.Entry( );
    entry.eventID = EventTriggerType.PointerDown;
    entry.callback.AddListener( ( data ) => { OnPointerDownDelegate( (PointerEventData)data ); } );
    eventTrigger1.triggers.Add( entry );
}

public void OnPointerDownDelegate( PointerEventData data )
{
    Debug.Log( "OnPointerDownDelegate called." );
}
Sign up to request clarification or add additional context in comments.

Comments

0

In this method, you can pass variables to the method while ignoring PointerEventData

void Start()
{
    float parametr = 0f;
    EventTrigger eventTrigger = gameObject.GetComponent<EventTrigger>();
    EventTrigger.Entry entry = new EventTrigger.Entry();
    {
        entry.eventID = EventTriggerType.Select; // event type (click, hold, etc.)
    }
    entry.callback.AddListener(data => MetodeType_1((PointerEventData)data, parametr)); // if you need to pass a parameter and PointerEventData data

// OR

    entry.callback.AddListener(_ => MetodeType_2(parametr));// if you need to pass a parameter
    eventTrigger.triggers.Add(entry);
}

public void MetodeType_1(PointerEventData data,float parametr)
{
    ///
    /// method body
    ///
}
public void MetodeType_2(float parametr)
{
    ///
    /// method body
    ///
}

1 Comment

Might want to translate those russian comments to english in the code snippet.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.