Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在按钮上实现一个按钮,用相同的点击删除父项和子项,而不让父项可点击?(团结)_C#_Unity3d - Fatal编程技术网

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。。。在代码的下半部分。