When cloning a button at runtime using Instantiate(), which contained listeners on it's onClick
event, the listeners are not present in the clone.
The behaviour can be tested by having a Canvas with a button and this script attached:
void Start () {
var button = transform.GetChild (0);
button.GetComponent<Button> ().onClick.AddListener (new UnityAction(() => Debug.Log("Event triggered!")));
var button2 = Instantiate (button);
button2.SetParent (transform);
}
The cloned button will not print anything to the console when clicked.
Is there a way to clone a GameObject
so that it retains event listeners?