设置一个稳定的按钮';s OnClick,以设置gameobject变量?统一C#

设置一个稳定的按钮';s OnClick,以设置gameobject变量?统一C#,c#,unity3d,C#,Unity3d,嘿,伙计们!由于我的问题的独特性质,我第一次使用堆栈溢出 我目前正在根据场景中使用特定脚本的游戏对象的数量实例化一个按钮。如何确保实例化按钮的onClick将父脚本的空gameObject变量设置为(I)gameObject(物理炮塔) private void Start() { 炮塔脚本[]炮塔SONTANK=FindObjectsOfType(); 对于(int i=0;i炮塔支架=炮塔坦克[i]是lambda,它将用炮塔坦克[i]设置炮塔支架字段,其中i是炮塔的索引 顺便说一下,您的代码

嘿,伙计们!由于我的问题的独特性质,我第一次使用堆栈溢出

我目前正在根据场景中使用特定脚本的游戏对象的数量实例化一个按钮。如何确保实例化按钮的onClick将父脚本的空gameObject变量设置为(I)gameObject(物理炮塔)

private void Start()
{
炮塔脚本[]炮塔SONTANK=FindObjectsOfType();
对于(int i=0;i
如果您使用的按钮是
按钮
,您可以这样做:

for(int i=0;i炮塔支架=炮塔坦克[i];
}
()=>炮塔支架=炮塔坦克[i]
是lambda,它将用
炮塔坦克[i]
设置
炮塔支架
字段,其中
i
是炮塔的索引

顺便说一下,您的代码看起来需要一些改进
GetChild()
返回transform,因此您不必执行
GetChild(0).gameObject.transform
来获取transform。只要
GetChild(0)
就足够了

而且,
transform
字段已经存在于
monobhavior
中,因此您不需要通过
gameObject
访问
transform

如果预置为
Transform
,那么,
Instantiate
可以返回
Transform
类型。因此,您的代码是:

Transform-tartabutton=实例化(testingtartabutton.Transform,gameObject.Transform.GetChild(0.GetChild));
炮塔按钮.GetChild(0).GetComponent().text=TotaltasonTank[i].名称;
炮塔按钮位置=新矢量3(150+(100*i),330);
TotalButton.GetComponent().onClick.AddListner(
()=>炮塔支架=炮塔坦克[i];

它的冗余更少。

您的回答似乎不起作用。我无法让任何一个版本正常工作,因为它无法在按钮上设置任何内容或正确比较这两个选项。噢。还有其他建议吗?