मेरे पास गतिशील रूप से लोड की गई सूची है जिसमें विभिन्न बटन होते हैं। यदि एक बटन क्लिक किया जाता है, तो सूची की संबंधित प्रविष्टि नष्ट हो जाएगी। अब मैं गतिशील रूप से बनाए गए पैरेंट बटनों में से प्रत्येक पर एक बच्चा बटन रखना चाहता हूं, जो माता-पिता और बच्चे को नष्ट कर देगा। और माता-पिता को इस डिलीट फंक्शन को "खोना" चाहिए।

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
softwareUser 28 मई 2019, 19:32

1 उत्तर

सबसे बढ़िया उत्तर

आप बटन निर्माण कोड को कॉपी पेस्ट कर सकते हैं, और बस 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)); या कुछ और के साथ समायोजित करना होगा ताकि यह अपने मूल बटन के साथ ओवरलैप न हो।

2
Ruzihm 30 मई 2019, 14:02