Ich benutze C# mit Unity, obwohl du wahrscheinlich nicht wissen musst, dass Unity hier hilft :). Ich würde Ihren Rat sehr schätzen, da ich noch neu in der Codierung bin.Wie mache ich Buttons interactible = false basierend auf dem Inhalt einer Liste?
Ich habe ein Panel mit 8 Tasten. Jeder fügt 1 Element zur Liste hinzu. Aber ich muss überprüfen, ob der Spieler dieses Element bereits auf seiner Liste hat (es ist ein String-Name), und wenn ja, dann drehe den Button, der diesem Item entspricht, auf interactibable = false.
Mit anderen Worten, wenn der Spieler diesen Gegenstand hat, muss ich den Knopf machen, der diesen Gegenstand inaktiv macht (damit der Spieler nicht klicken kann, um ihn wieder zur Liste hinzuzufügen).
Die Elemente sind nur String-Namen auf der Liste der Elemente. Buttons führen einfache Funktionen aus: ButtonList.Add ("item1"), und so weiter.
Ich habe versucht, so etwas wie dieses Gebäude:
Button Btn_item0 = GameObject.Find ("Btn_item0").GetComponent <Button>();
Button Btn_item1 = GameObject.Find ("Btn_item1").GetComponent <Button>();
Button Btn_item2 = GameObject.Find ("Btn_item2").GetComponent <Button>();
Button Btn_item3 = GameObject.Find ("Btn_item3").GetComponent <Button>();
Button Btn_item4 = GameObject.Find ("Btn_item4").GetComponent <Button>();
Button Btn_item5 = GameObject.Find ("Btn_item5").GetComponent <Button>();
Button Btn_item6 = GameObject.Find ("Btn_item6").GetComponent <Button>();
Button Btn_item7= GameObject.Find ("Btn_item7").GetComponent <Button>();
List<Button> buttonList = new List<Button>() {Btn_item0, Btn_item1, Btn_item2, Btn_item3, Btn_item4, Btn_item5, Btn_item6, Btn_item7};
List<string> itemList = new List<string>() {"item0", "item1", "item2", "item3", "item4", "item5", "item6", "item7"};
foreach (Button button in buttonList) {
foreach (string item in itemList) {
if (itemList.Contains (item))
button.interactable = false;
}
}
Aber offensichtlich wird dies nicht funktionieren. Wie machst du das richtig?
Ps. Das obige macht alle Schaltflächen inaktiv, weil wir in foreach Schleife String-Element erstellt haben, das jede Position auf der Liste ist. Die Artikelliste enthält also einen Gegenstand an jeder Position der Liste, so dass alle Knöpfe inaktiv werden.
'buttonList' sollte' List
Ja, sorry, das war ein Tippfehler hier. Behoben, aber die Frage ist offen. –