【发布时间】:2019-01-03 01:41:34
【问题描述】:
我知道这可能是 How to detect click/touch events on UI and GameObjects 的副本,但我实际上尝试了其中的内容。但我的问题依然存在。
这是我的代码
GameObject o = null;
private void Start()
{
for (int i = 0; i < 6; i++)
{
o = Instantiate(obj) as GameObject;
o.transform.SetParent(pos_obj);
o.transform.localScale = Vector3.one;
o.transform.name = "chips " + i;
o.transform.localPosition = new Vector3(0, 0, 0);
NGUITools.SetActive(o, true);
UIGridReposition(UIGrid.Sorting.Vertical, true);
}
}
上面这行代码是我实例化精灵的方式,在我的层次结构中是这样的
筹码 1
筹码 2
筹码 3
筹码 4
筹码 5
现在当我尝试将这行代码放入UI Button
public void TestClickEvent(){
Debug.Log("This object is :" + o.transform.gameobject.name);
}
现在,当我单击实例化对象时,只有 chips 5 将只是我控制台上的输出。即使我点击第一个,第二个等Instantiated Object
谁能帮帮我。
例如,我要做的是获取每个Intantiated Object 的指定编号
如果我点击chips 1,那么它将输出This object is : 1;
【问题讨论】:
-
我把
Button button = o.GetComponent<Button>()放在for循环下面是不是@Programmer -
@Programmer 顺便说一句,先生,它是一个
sprite,它有一个ui button -
是的,我正在使用 NGUI,所以您的代码是不可能的先生?
-
这很奇怪。我不完全确定NGUI。但是代码中的某处调用了
TestClickEvent()', which is being assigned to all buttons, pointing to the last instantiated object. If that's all your code, then it would seem it's inNGUITools.SetActive(o, true);`,但这没有任何意义。 -
您必须张贴附有组件的游戏对象的屏幕截图。如果您使用的是 NGUI,请忘记它,因为我已经很长时间没有使用它并且不再使用它了。这仅适用于 Unity 的 UI