Проблема:
Я разрабатываю словесную игру в Unity, используя C#. У меня есть список SelectedLetters, который используется в моей функции удаления слов. Однако я столкнулся с проблемой, когда буквы не удаляются или не возвращаются правильно в сетку букв (список не распознает и не возвращает 0in .Count. но я вижу в инспекторе единства, что в списке есть элементы).< /p>
Определение игры:
игра основана на механике слов в играх «BookWorm».
Сетка слов представляет собой GridLayout с двумя строками, на которые игрок нажимает письмо в сетке букв кнопка с текстом (на основе текста сетки букв) создается в сетке слов, и изображение буквы исчезает из сетки букв. и когда игрок нажимает кнопку в сетке слов, слово удаляется из сетки слов, а исчезающая буква появляется снова.
Что я пробовал:
Я пробовал реализована логика удаления слов с использованием цикла удаления букв из списка SelectedLetters. Удаленные буквы должны вернуться на исходные позиции в сетке букв, но, похоже, во время этого процесса что-то идет не так.
// я создаю экземпляр списка вне функций (уровень класса).
[SerializeField] private List SelectedLetters = new List();
//Функция удаления слов
private void WordRemoval(GameObject clickedButton, int clickedIndex)
{
int Count = GetCount(); //return the count of how many objects are in WordGrid.
// Handle when clicking in the Upper Row
if (clickedButton.transform.parent == WordGrid.GetChild(0).transform && clickedIndex < MaxLettersPerRow)
{
for (int i = WordGrid.GetChild(1).childCount - 1; i >= 0; i--)
{
Transform child = WordGrid.GetChild(1).GetChild(i);
Destroy(child.gameObject);
}
for (int i = WordGrid.GetChild(0).childCount - 1; i >= clickedIndex; i--)
{
Transform child = WordGrid.GetChild(0).GetChild(i);
Destroy(child.gameObject);
if (i < Count)
{
ReturnButtonToLetterGrid(i);
}
else
{
Debug.LogWarning("Index out of range for SelectedLettersList: " + i);
}
}
}
//в этой функции я добавляю в список
public void OnLetterButtonClick(Button button)
{
if (!SelectedLetters.Contains(button))
{
SelectedLetters.Add(button);
string letter = button.GetComponentInChildren().text;
AddLetterToWordGrid(letter);
button.GetComponent().enabled = false;
button.GetComponentInChildren().enabled = false;
CheckingWordGrid();
}
else
{
Debug.LogWarning("Button is already in SelectedLetters: " + button.GetComponentInChildren().text);
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... a-function
Unity C#: проблема со списком, который не распознается в функции [закрыто] ⇐ C#
Место общения программистов C#
1732094285
Anonymous
Проблема:
Я разрабатываю словесную игру в Unity, используя C#. У меня есть список SelectedLetters, который используется в моей функции удаления слов. Однако я столкнулся с проблемой, когда буквы не удаляются или не возвращаются правильно в сетку букв (список не распознает и не возвращает 0in .Count. но я вижу в инспекторе единства, что в списке есть элементы).< /p>
Определение игры:
игра основана на механике слов в играх «BookWorm».
Сетка слов представляет собой GridLayout с двумя строками, на которые игрок нажимает письмо в сетке букв кнопка с текстом (на основе текста сетки букв) создается в сетке слов, и изображение буквы исчезает из сетки букв. и когда игрок нажимает кнопку в сетке слов, слово удаляется из сетки слов, а исчезающая буква появляется снова.
Что я пробовал:
Я пробовал реализована логика удаления слов с использованием цикла удаления букв из списка SelectedLetters. Удаленные буквы должны вернуться на исходные позиции в сетке букв, но, похоже, во время этого процесса что-то идет не так.
// я создаю экземпляр списка вне функций (уровень класса).
[SerializeField] private List SelectedLetters = new List();
//Функция удаления слов
private void WordRemoval(GameObject clickedButton, int clickedIndex)
{
int Count = GetCount(); //return the count of how many objects are in WordGrid.
// Handle when clicking in the Upper Row
if (clickedButton.transform.parent == WordGrid.GetChild(0).transform && clickedIndex < MaxLettersPerRow)
{
for (int i = WordGrid.GetChild(1).childCount - 1; i >= 0; i--)
{
Transform child = WordGrid.GetChild(1).GetChild(i);
Destroy(child.gameObject);
}
for (int i = WordGrid.GetChild(0).childCount - 1; i >= clickedIndex; i--)
{
Transform child = WordGrid.GetChild(0).GetChild(i);
Destroy(child.gameObject);
if (i < Count)
{
ReturnButtonToLetterGrid(i);
}
else
{
Debug.LogWarning("Index out of range for SelectedLettersList: " + i);
}
}
}
//в этой функции я добавляю в список
public void OnLetterButtonClick(Button button)
{
if (!SelectedLetters.Contains(button))
{
SelectedLetters.Add(button);
string letter = button.GetComponentInChildren().text;
AddLetterToWordGrid(letter);
button.GetComponent().enabled = false;
button.GetComponentInChildren().enabled = false;
CheckingWordGrid();
}
else
{
Debug.LogWarning("Button is already in SelectedLetters: " + button.GetComponentInChildren().text);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79206435/unity-c-issue-with-a-list-that-dont-recognize-in-a-function[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия