Назначьте целочисленное значение для каждой кнопки в массиве кнопок в Unity - PullRequest
0 голосов
/ 27 мая 2018

Есть ли способ присвоить целочисленное значение, основанное на тексте кнопки, каждой кнопке пользовательского интерфейса в массиве, а затем проверить правильность перемещения этого значения OnClick () на основе присвоенного значения?

в основном

for (int i = 0; i < buttons.Length; i++)
    {
        buttons[i].interactable = true;
        buttons[i].GetComponent<Image>().sprite = null;
        // some code here to assign an integer value to each button in the 
        // array.  int boardSquareValue; is in a separate script named Value 
        // attached to each button object;


    }

Каждый текстовый дочерний объект Buttons имеет значение Button в качестве текста.Если я смогу преобразовать это в пригодный для использования int, это тоже было бы замечательно и могло бы исключить использование внешнего скрипта?

К каждому игровому объекту-кнопке с именем Value добавлен скрипт с одной общедоступной переменной, называемой boardSquareValue.

Вроде тиктактой вещи, только у каждого квадрата есть значение, и условия для правильных ходов будут основаны на этих целочисленных значениях на намного большей доске.

Я перепробовал все, что мог придумать.

Итак, я бы хотел щелкнуть по квадрату, активировать фигуру (это сделано), проверить значение этого квадрата и, если оно верное (целое значение от 0 до4) скажите «Да», этот ход действителен, или «Нет», этот ход недействителен.Я просто не могу получить значение, назначенное кнопке штопки.

РЕДАКТИРОВАТЬ:

Каждое показанное число является значением квадрата.Игрок не может поместить фигуру в квадрат со значением, меньшим, чем его предыдущий квадрат.Я должен присвоить это значение как int, так или иначе.Цикл for делает кнопки интерактивными и устанавливает для спрайтов фигуры игрока значение NULL.Мне нужно установить целочисленное значение каждого квадрата, если это возможно.

Игровая доска и иерархия

Скрипт:

public void GameSetup()
{
    whosTurnIsIt = 0;
    turnCount = 0;
    turnIcons[0].SetActive(true);
    turnIcons[1].SetActive(false);
    for (int i = 0; i < playAreaSquares.Length; i++)
    {
        playAreaSquares[i].interactable = true;
        playAreaSquares[i].GetComponent<Image>().sprite = null;
        boardSquareValue = playAreaSquares[i].GetComponent<Value>().boardSquareValue;
        Debug.Log(playAreaSquares[i].GetComponent<Value>().boardSquareValue);
    }








}

public void SetValueOfSquare()
{
    //Debug.Log("This square's value is: " + squareValue);
    //squareValue = gameObject.GetComponent<Value>().boardSquareValue;

}

public void PlaySquareButton(int WhichNumber)
 {
    playAreaSquares[WhichNumber].image.sprite = playIcons[whosTurnIsIt];
    playAreaSquares[WhichNumber].interactable = false;
    // int.TryParse(playAreaSquares[WhichNumber]., out boardSquareValueOther.boardSquareValue);
    boardSquareValue = playAreaSquares[WhichNumber].GetComponent<Value>().boardSquareValue;


    if (whosTurnIsIt == 0)
    {
        whosTurnIsIt = 1;
        turnIcons[0].SetActive(false);
        turnIcons[1].SetActive(true);
        Debug.Log(boardSquareValue);
        lastPlayedSquareValueX = boardSquareValue;

    }
    else
    {
        whosTurnIsIt = 0;
        turnIcons[0].SetActive(true);
        turnIcons[1].SetActive(false);
        Debug.Log(boardSquareValueOther.boardSquareValue);
        lastPlayedSquareValueO = boardSquareValue;
    }

 }

}

Сейчас беспорядок, потому что я пытаюсь сделать так много разных вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...