【问题标题】:Unity 3D VR (Unity 5.6) How to add event trigger using c# scriptUnity 3D VR(Unity 5.6)如何使用c#脚本添加事件触发器
【发布时间】:2017-04-10 12:51:56
【问题描述】:

我想问你如何只使用脚本来添加像 ipointerdown 这样的事件触发器,因为我的对象是使用脚本生成的。我已经在其中添加了事件触发器,但我对如何添加 ipointerdown 事件感到困惑。谢谢大家

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);
    }



}

【问题讨论】:

    标签: c# unity3d google-cardboard google-vr


    【解决方案1】:
    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." );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      相关资源
      最近更新 更多