Как внедрить кнопку в кнопку, чтобы удалить родительский и дочерний элементы одним и тем же щелчком мыши, чтобы родитель не был активным?(Единство) - PullRequest
1 голос
/ 28 мая 2019

У меня есть динамически загруженный список, который состоит из разных кнопок. Если кнопка нажата, соответствующая запись в списке будет уничтожена. Теперь я хочу иметь дочернюю кнопку на каждой динамически создаваемой родительской кнопке, которая уничтожит родительскую и дочернюю кнопки. И родитель должен «потерять» эту функцию удаления.

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();
}

1 Ответ

2 голосов
/ 28 мая 2019

Вы можете скопировать, вставить код создания кнопки и просто переместить 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();
}

Вам, вероятно, придется настроить его положение с помощью childButton.transform.Translate(Vector3(0f,0.5f,0f)); или чего-то такого, чтобы оно не перекрывалось с родительской кнопкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...