我正在从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");
}
我也试过这些
btn.onClick.AddListener(() => {onButtonClick()});
or
btn.onClick.AddListener(() => {onButtonClick();});
or
btn.onClick.AddListener(() => onButtonClick());
但没有任何效果。
答案 0 :(得分:3)
我已将统一更新到5.1.2,现在它正常工作。但它仍然没有反映在UI中,有些人说非持久性统一事件没有在UI中反映出来,我想这是真的。
答案 1 :(得分:1)
您在此处尝试执行的操作是在运行时添加回调。如果你想在设计时添加回调,你应该点击编辑器中On Click部分右下角的小加号,然后选择应该处理回调的对象和按钮应该调用的函数
答案 2 :(得分:1)
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
}