このコードを書いて、シーン内のキューブの数を特定し、キューブごとに動的にボタンを作成します。ボタンをクリックすると、キューブの位置が表示されます。このコードを実行すると、最後のキューブ位置は私がここで間違ってあなたのラムダ関数でキューブの位置をボタンのクリックに統一して割り当てますか?
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class buttons : MonoBehaviour {
public GameObject MyButtonPrefab;
public RectTransform ParentPanel;
// Use this for initialization
int bpos = 143;
Button m;
string a;
void Start() {
//Debug.Log(GameObject.FindGameObjectWithTag("Cube").transform.position);
GameObject[] objects = GameObject.FindGameObjectsWithTag("Cube");
int x = GameObject.FindGameObjectsWithTag("Cube").Length;
Debug.Log(x);
for (int i = 0; i < objects.Length; i++)
{
bpos++;
a = objects[i].transform.position.ToString();
Debug.Log(a);
GameObject newButton = (GameObject)Instantiate(MyButtonPrefab, new Vector3(1, 1, 1), Quaternion.identity);
newButton.transform.SetParent(ParentPanel, false);
newButton.transform.localScale = new Vector3(1, 1, 1);
newButton.transform.position = new Vector3(0, bpos, 0);
newButton.name = "Camerapos";
m = newButton.GetComponent<Button>();
m.onClick.AddListener(() =>
{
Debug.Log(a);
});
}
}
// Update is called once per frame
void Update() {
}
}
可能な重複http://stackoverflow.com/questions/4155691/c-sharp-lambda-local-variable-value-not-あなたが思ったときに) – sokkyoku