Есть ли способ присвоить целочисленное значение, основанное на тексте кнопки, каждой кнопке пользовательского интерфейса в массиве, а затем проверить правильность перемещения этого значения 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;
}
}
}
Сейчас беспорядок, потому что я пытаюсь сделать так много разных вещей.