2

ScrollView、Texts、およびButtonsを使用してUnity3Dでリストを作成しました。ユーザーがアイテムの近くにあるボタンをクリックすると、アイテムが削除されます。ボタンとテキストは Instantiate メソッドで作成されます。項目のリストは一般的なリスト (List) です。

アイテムのリスト:

public List<Item> Items { get; set; }

ボタンとテキストの作成:

public Button itemButton;
public Text itemText;
(...)
public void ShowItems()
{
    ClearItems(); //Destroys button and text gameObjects.

    foreach (var item in Globals.Items)
    {
        var text = Instantiate(itemText) as Text;
        var button = Instantiate(itemButton) as Button;
        button.GetComponentInChildren<Text>().text = "Delete";
        textsList.Add(text); //save Text element to list to have possibility of destroying Text gameObjects
        buttonsList.Add(button);//save Button element to list to have possibility of destroying Button gameObjects
        text.gameObject.SetActive(true);
        button.gameObject.SetActive(true);
        //(...) Setting GUI items position here
    }
}

アイテムを削除するためにクリックされたアイテムのボタンを検出する方法は?

2番目のボタンクリック== 2番目のアイテムの削除を取得する方法がわかりません。

ScrollView、テキスト、およびボタンで作成されたリスト

4

1 に答える 1

3

1 行のコードを追加するだけです。

        foreach (var item in Globals.Items)
        {
            var text = Instantiate(itemText) as Text;
            var button = Instantiate(itemButton) as Button;
            button.GetComponentInChildren<Text>().text = "Delete";
            textsList.Add(text); //save Text element to list to have possibility of destroying Text gameObjects
            buttonsList.Add(button);//save Button element to list to have possibility of destroying Button gameObjects
            text.gameObject.SetActive(true);
            button.gameObject.SetActive(true);

            // this line:
            button.onClick.AddListener(delegate {Destroy(text.gameObject); Destroy(button.gameObject);});

            //(...) Setting GUI items position here
        }
于 2016-06-29T16:27:18.350 に答える