The method I found that worked well to pass functions with arguments was using Addlistener, delegates. But I ran into a problem using delegate inside another.
I created two buttons, (button1 and button2) and applied this code to main camera
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class ButtonControl : MonoBehaviour {
public Button Button1;
public Button Button2;
// Use this for initialization
void Start () {
int local_i = 5;
Button1.GetComponent<Button>().onClick.AddListener(delegate{ Job1(local_i); });
}
void Job1(int jobNo){
int j = 60;
Debug.Log ("You gave me Job no. " + jobNo);
Button2.GetComponent<Button>().onClick.AddListener(delegate{ SumTest (jobNo, j); });
}
void SumTest(int i, int j)
{
Debug.Log (i + " + " + j + " = " + (i + j));
}
}
When I press Button1 and then Button2 the program works fine, but when I press the button1 again and then button2, the SumTest function runs twice. And on the third time, it runs thrice, the button has been clicked only once though. How can I remedy it?
I am not a pro programmer, mostly writing codes on what works basis :). Here is the screenshot of the problem.