C# 如何在按钮上实现一个按钮,用相同的点击删除父项和子项,而不让父项可点击?(团结)
我有一个由不同按钮组成的动态加载列表。如果单击按钮,列表中相应的条目将被销毁。现在我想在每个动态创建的父按钮上都有一个子按钮,它将销毁父按钮和子按钮。并且父级应该“丢失”这个删除功能C# 如何在按钮上实现一个按钮,用相同的点击删除父项和子项,而不让父项可点击?(团结),c#,unity3d,C#,Unity3d,我有一个由不同按钮组成的动态加载列表。如果单击按钮,列表中相应的条目将被销毁。现在我想在每个动态创建的父按钮上都有一个子按钮,它将销毁父按钮和子按钮。并且父级应该“丢失”这个删除功能 public void AddMoreButton() { if (lectureInput.text.Length < 1) { return; } lectureTitle.text = lectureInput.text; creditsTitle
public void AddMoreButton()
{
if (lectureInput.text.Length < 1)
{
return;
}
lectureTitle.text = lectureInput.text;
creditsTitle.text = creditsInput.text;
swsTitle.text = swsInput.text;
GameObject button = (GameObject)Instantiate(prefabButton);
Button buttonInstance = button.GetComponentInChildren<Button>();
buttonInstance.onClick.AddListener(() => { Destroy(button); });
button.transform.SetParent(panel.transform, false);
button.layer = 5;
button.SetActive(true);
ClearInputs();
}
public void AddMoreButton()
{
如果(讲师输入.text.Length<1)
{
返回;
}
讲师输入文本=讲师输入文本;
creditsTitle.text=creditsInput.text;
swsTitle.text=swsInput.text;
游戏对象按钮=(游戏对象)实例化(预设按钮);
Button buttonInstance=Button.getComponentChildren();
buttonInstance.onClick.AddListener(()=>{Destroy(button);});
button.transform.SetParent(panel.transform,false);
按钮层=5;
按钮。设置激活(真);
ClearInputs();
}
您几乎可以复制粘贴按钮创建代码,只需将Destroy(button)
移动到其AddListener
调用中即可。确保在创建childButton
时,除了在Destroy(button)
调用中,不要更改父按钮。也可以将父级设置为按钮:
public void AddMoreButton()
{
if (lectureInput.text.Length < 1)
{
return;
}
lectureTitle.text = lectureInput.text;
creditsTitle.text = creditsInput.text;
swsTitle.text = swsInput.text;
GameObject button = (GameObject)Instantiate(prefabButton);
Button buttonInstance = button.GetComponentInChildren<Button>();
childButtonInstance.onClick.AddListener(() => { /*whatever the parent button should do*/ });
button.transform.SetParent(panel.transform, false);
button.layer = 5;
button.SetActive(true);
GameObject childButton = (GameObject)Instantiate(prefabButton);
Button childButtonInstance = childButton.GetComponentInChildren<Button>();
buttonInstance.onClick.AddListener(() => { Destroy(button); });
childButton.transform.SetParent(button, false);
childButton.layer = 5;
childButton.SetActive(true);
ClearInputs();
}
public void AddMoreButton()
{
如果(讲师输入.text.Length<1)
{
返回;
}
讲师输入文本=讲师输入文本;
creditsTitle.text=creditsInput.text;
swsTitle.text=swsInput.text;
游戏对象按钮=(游戏对象)实例化(预设按钮);
Button buttonInstance=Button.getComponentChildren();
childButtonInstance.onClick.AddListener(()=>{/*无论父按钮应该做什么*/});
button.transform.SetParent(panel.transform,false);
按钮层=5;
按钮。设置激活(真);
GameObject childButton=(游戏对象)实例化(预制按钮);
Button childButtonInstance=childButton.GetComponentChildren();
buttonInstance.onClick.AddListener(()=>{Destroy(button);});
childButton.transform.SetParent(按钮,false);
childButton.layer=5;
childButton.SetActive(真);
ClearInputs();
}
您可能必须使用
childButton.transform.Translate(Vector3(0f,0.5f,0f))调整其位置代码>或其他一些东西,这样它就不会与其父按钮重叠。它起作用了。但是,我必须更改按钮实例。单击。。。到childButtonInstance.onClick。。。在代码的下半部分。