유니티와 함께 C#을 사용하고 있습니다. 유니티에 대해 도움이 될 필요는 없습니다. :) 나는 아직도 코딩에 익숙하지 않기 때문에 당신의 충고에 진심으로 감사 할 것입니다.버튼을 상호 작용 가능하게 만드는 방법 = 일부 목록의 내용을 기반으로하는 거짓?
나는 8 개의 버튼이있는 패널이 있습니다. 각각은 1 개의 항목을 목록에 추가합니다. 하지만 플레이어가 이미 목록에있는 항목 (문자열 이름)을 가지고 있는지 확인해야하며, 그렇다면 해당 항목에 해당하는 버튼을 interactable = false로 설정해야합니다.
즉, 플레이어가 해당 항목을 가지고 있다면 해당 항목을 비활성 상태로 만드는 버튼을 만들어야합니다 (플레이어를 클릭하여 목록에 다시 추가 할 수 없음).
항목은 항목 목록의 문자열 이름입니다. 버튼은 간단한 기능을 실행합니다 : ButtonList.Add ("item1"), 등등.
나는 이런 식으로 뭔가를 만드는 시도 : 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;
}
}
을하지만 분명이 작동하지 않습니다. 어떻게 그 일을 제대로합니까?
ps. 위의 코드는 버튼을 비활성 상태로 만듭니다. foreach 루프에서는 목록의 모든 위치 인 문자열 항목을 만들었 기 때문입니다. 따라서 항목 목록에는 목록의 모든 위치에 항목이 있으므로 모든 버튼이 비활성화됩니다.
'buttonList'는'List'이 아닌'List
예, 죄송합니다, 여기 오타였습니다. 수정되었지만 질문이 열려 있습니다. –