Почему у меня не работают кнопки пользовательского интерфейса при выборе персонажа на экране? - проблема с сборными консC#

Место общения программистов C#
Ответить
Anonymous
 Почему у меня не работают кнопки пользовательского интерфейса при выборе персонажа на экране? - проблема с сборными конс

Сообщение Anonymous »

Я новичок в Unity и пытаюсь выбрать персонажа для локальной многопользовательской игры. В настоящее время у меня есть код и несколько кнопок, но когда я запускаю код, новые кнопки появляются друг над другом, это единственные кнопки, которые выбирают правильный символ и соответствующим образом меняют изображение. Кнопки, уже находящиеся на экране, выбирают только один и тот же символ, независимо от того, какой из них нажат. Я не получаю никаких ошибок, и моя отладка в порядке. Вот мой сценарий, есть идеи?
public Sprite[] characterSprites;
public Image player1Image;
public Image player2Image;
public GameObject characterButtonPrefab;
public Transform buttonsParent;
public Button confirmButton;

private int player1Selection = -1; //unselected
private int player2Selection = -1; //unselected

void Start()
{

for (int i = 0; i < characterSprites.Length; i++)
{
//instantiated button
GameObject newButton = Instantiate(characterButtonPrefab, buttonsParent);

Image buttonImage = newButton.GetComponentInChildren();
buttonImage.sprite = characterSprites; //Set sprite

Button button = newButton.GetComponent();
int index = i;
button.onClick.AddListener(() => OnCharacterSelect(index));
}

//save button false until both picked
confirmButton.interactable = false;
}

public void OnCharacterSelect(int index)
{
if (player1Selection == -1)
{
player1Selection = index;
player1Image.sprite = characterSprites[index]; //change image of box
Debug.Log("Player 1 selected character: " + index);
}
else if (player2Selection == -1)
{
player2Selection = index;
player2Image.sprite = characterSprites[index]; //change image of box
Debug.Log("Player 2 selected character: " + index);
}
else
{
Debug.Log("Both players have selected characters!");
}

//checks if both players have selected their characters before allowing to save and play
if (player1Selection != -1 && player2Selection != -1)
{
confirmButton.interactable = true; //enable save button
}
}

public void OnConfirmSelection()
{
Debug.Log("Both players confirmed their selection.");
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... efab-issue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»