Как я могу создать кнопку (не GUI и т.д.) В Unity 4.6 из кода? Мне нужно указать действие при нажатии.
Я попробовал добавить делегата или что-то в onClick
но я не могу заставить его работать.
http://docs.unity3d.com/ScriptReference/UI.Button-onClick.html
Это код, который у меня есть до сих пор:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class ButtontitleAndAction {
public string Title;
public delegate void Del();
public ButtontitleAndAction(string title, Del theaction) {
this.Title = title;
this.action = theaction;
}
public void Call() {
Debug.Log("Call " + this.Title);
this.action();
}
private Del action;
}
public class MjalertScript : MonoBehaviour {
public Text Text;
public GameObject gameobjectButtons;
public GameObject gameobjectMjalertbutton;
// Use this for initialization
void Start() {
}
public void Addbuttons(ButtontitleAndAction[] buttontitles) {
// public void Addbuttons(string[] buttontitles) {
GridLayoutGroup grid = this.gameobjectButtons.GetComponent<GridLayoutGroup>();
float newwidth = 400 / buttontitles.Length;
grid.cellSize = new Vector2(newwidth, grid.cellSize.y);
foreach (ButtontitleAndAction buttondata in buttontitles) {
GameObject gameobjectButton = (GameObject)Instantiate(this.gameobjectMjalertbutton);
Transform child = gameobjectButton.transform.GetChild(0); // There should just be one child, the gameobject for the Text label.
Text textofbutton = child.gameObject.GetComponent<Text>();
textofbutton.text = buttondata.Title;
gameobjectButton.transform.SetParent(gameobjectButtons.transform, false);
Button buttonofbutton = gameobjectButton.GetComponent<Button>();
Debug.Log("buttonofbutton: " + buttonofbutton + ", for label text: " + buttondata.Title);
buttonofbutton.onClick.AddListener(() => {
Debug.Log("DOO Something!");
//buttondata.Call();
});
}
}
}
Кнопки не реагируют ни на какие краны. Я ожидал "DOO Something!" что-то выводить, но ничего.
В приведенном выше коде нет никаких проблем. Я понял реальную проблему. Так или иначе, элемент EventSystem никогда не добавлялся в иерархию. Просто добавьте один, и кнопки будут работать. На самом деле, в моем случае, ни кнопки с помощью кода, ни с помощью редактора никогда не работали. Проблема с EventSystem была проблемой.