c# - unity c# 委托获取本地参数错误
问题描述
更新 :
这个问题和这个问题无关,但是UI Buttons的透明触发区域重叠了。问题本身应该结束。
循环将for
N -on click 侦听器添加到某些按钮。
例如,当 clicked 时,参数应该是 'n',但有时会变成 'n+1'。
换句话说,当按钮编号“n”被点击时,“n”作为参数传递给代理。但实际上它有时会变成 'n+1' 作为参数传递。
我听说匿名函数应该将参数复制到局部变量。我已经完成了对代表的所有方式。但这没有帮助。
public class StageMenuController : MonoBehaviour
{
...
public Button stageTemplate;
void Start()
{
// get stage count
numberOfStages = SceneManager.sceneCountInBuildSettings;
Transform container = stageTemplate.transform.parent;
for (int i = 0; i < numberOfStages; i++){
Button stage = Object.Instantiate(stageTemplate, container);
...
// stage number on the icon
int j = i+1;
stage.transform.Find("stageNumber")
.gameObject.GetComponent<TextMeshProUGUI>().text
= (j).ToString("D2");
...
int m = j;
bool addTheListener(int k){
int m = k;
Debug.Log("AddListener scene " +m);
stage.onClick.AddListener(delegate(){
int n = m;
Debug.Log("go to scene " +n);
UnityEngine.SceneManagement.SceneManager.LoadScene(n);
});
return true;
}
var x = addTheListener(j);
}
...
}