将新脚本附加到unity3d中的按钮onclick事件c#

时间:2015-07-26 11:57:01

标签: c# unity3d

我正在从c#创建一个新的游戏对象并尝试在clecked时执行脚本。这是代码。

    public void createButton(){
            GameObject kGO = new GameObject ();
            kGO.transform.parent = kCanvas.transform;
            kGO.AddComponent<Image>();
            Button btn = kGO.AddComponent<Button>();
            btn.onClick.AddListener(onButtonClick);
    }

    public void onButtonClick(){
        Debug.Log ("clicked");
    }

但是这个脚本不起作用,没有任何脚本附加到按钮上。 enter image description here

我也试过这些

btn.onClick.AddListener(() => {onButtonClick()});
or
btn.onClick.AddListener(() => {onButtonClick();});
or
btn.onClick.AddListener(() => onButtonClick());

但没有任何效果。

3 个答案:

答案 0 :(得分:3)

我已将统一更新到5.1.2,现在它正常工作。但它仍然没有反映在UI中,有些人说非持久性统一事件没有在UI中反映出来,我想这是真的。

答案 1 :(得分:1)

您在此处尝试执行的操作是在运行时添加回调。如果你想在设计时添加回调,你应该点击编辑器中On Click部分右下角的小加号,然后选择应该处理回调的对象和按钮应该调用的函数

答案 2 :(得分:1)

我是这样做的。它是一个lamba表达。

 btn.onClick.AddListener(() =>
            {
                Debug.Log("IT WORKS");
// Just handle the button clikc inside here
            });

或者您可以尝试完全不同的方法:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
    public class TapOnNumber : MonoBehaviour, IPointerClickHandler {


        public void OnPointerClick(PointerEventData e)
        {
           //HandleClicks here
    }