Иногда я могу играть в свою игру целый путь без проблем, нажимая все одинаковые кнопки и запустив все один и тот же код, что и в других случаях (насколько я знаю). Тем не менее, иногда я получаю ошибку, на которую я нажимаю на «Спрайт», «я был уничтожен, но [я] все еще пытаюсь получить к нему», но, кажется, нет шаблона в этом поведении. < /P>
Я искал каждый раз, когда «уничтожить» происходит во всем моем коде и не могу найти ни одного обстоятельства, когда это будет уничтожать каждый спрайт (мои кнопки пользовательского интерфейса в порядке). < /P>
Я понимаю на бумаге, я, очевидно, должен просто уничтожить все спрайты, но я не могу сказать, почему это происходит так нерегулярно /«случайным образом», если это так.
Кроме того, когда я намеренно уничтожаю свои объекты, они Больше не видно на экране, тогда как в этих обстоятельствах они все еще есть. i.sstatic.net/ddp5kma4.png " />
В конкретном случае изображения я уже несколько раз сбросил колоду без проблем, несмотря на сброс колоды, вызывая проблему в других попытках игры (без кода. Изменение с тех пор), но ошибка была вызвана здесь уничтожением возврата, что также не вызывает проблему каждый раз). < /p>
Я помещаю печатные операторы после своих уничтожений (после копирования после копирования Код здесь) и, похоже, оба случая вызова уничтожения, которые вызывают его, но я не понимаю, почему
a) Проблема не возникает каждый раз, когда
b) он разрушает Карты, карты которых не помечают «Deckbutton» в DealFromDeck
c), объекты все еще «уничтожены», даже если они снова создаются все сначала < /p>
Здесь каждый метод Включает в себя «Уничтожить» в моем коде.public void DealFromDeck()
{
float xOffset = 1.7f;
string card;
UpdateSprite[] allCards = FindObjectsOfType();
if (deckLocation < (deck.Count))//Can't increment it if at end of deck
{
card = deck[deckLocation];
}
else//Reset when at end of deck
{
//Erase deck button children
foreach (UpdateSprite allCard in allCards)
{
if (allCard.transform.parent != null)
{
if (allCard.transform.parent.CompareTag("DeckButton"))
{
Destroy(allCard.gameObject);
}
}
}
deckLocation = 0;
deckZOffset = 0;
card = deck[deckLocation];
}
GameObject newCard = Instantiate(cardPrefab, new Vector3(deckButton.transform.position.x + xOffset, deckButton.transform.position.y, deckButton.transform.position.z - deckZOffset), Quaternion.identity, deckButton.transform);
newCard.transform.localScale = new Vector3(15, 15, 0);
newCard.GetComponent().sortingOrder = deckLocation;
newCard.name = card;
newCard.GetComponent().faceUp = true;
deckLocation++;
deckZOffset += 0.02f;
}
< /code>
Возврат лица (в моей игре пользователь может вернуть все карты лица на палубу, чтобы раскрыть новые) < /p>
public void ReturnFaceUps()//Button deckButton)
{
UpdateSprite[] cards = FindObjectsOfType();
//Lose 20 points for a reset if not needed
if(!cantMove)
{
game.score -= 20;
}
//Put face up cards back into deck
foreach (UpdateSprite card in cards)
{
Selectable cardAttr = card.GetComponent();
if (!cardAttr.inDeck && cardAttr.faceUp)//Face up tableau cards
{
foreach(List tableau in game.tableaus)
{
if (tableau.Contains(cardAttr.name))
{
tableau.Remove(cardAttr.name);
}
}
game.deck.Add(cardAttr.name);
}
}
//Reset deck offset
game.deckZOffset = 0;
//Delete all
foreach (UpdateSprite card in cards)
{
if (!card.CompareTag("DeckButton") && !card.CompareTag("Help") && !(card.name==("Card")))//Don't destroy deck button, help button or card prefab
{
Destroy(card.gameObject);
}
}
game.DealCards();
}
< /code>
Это не разрушает, но это то, что вызовы returnfaceups, и вы можете увидеть его в любом случае создания новых объектов.
Cards Deal Cards Tableau: < /p>
public void DealCards()
{
for (int i = 0;i
Подробнее здесь: https://stackoverflow.com/questions/794 ... -destroyed
Почему единство «случайно» делает мои объекты нулевыми / заявляющими, что они уничтожены? ⇐ C#
Место общения программистов C#
1739221760
Anonymous
Иногда я могу играть в свою игру целый путь без проблем, нажимая все одинаковые кнопки и запустив все один и тот же код, что и в других случаях (насколько я знаю). Тем не менее, иногда я получаю ошибку, на которую я нажимаю на «Спрайт», «я был уничтожен, но [я] все еще пытаюсь получить к нему», но, кажется, нет шаблона в этом поведении. < /P>
Я искал каждый раз, когда «уничтожить» происходит во всем моем коде и не могу найти ни одного обстоятельства, когда это будет уничтожать каждый спрайт (мои кнопки пользовательского интерфейса в порядке). < /P>
Я понимаю на бумаге, я, очевидно, должен просто уничтожить все спрайты, но я не могу сказать, почему это происходит так нерегулярно /«случайным образом», если это так.
Кроме того, когда я намеренно уничтожаю свои объекты, они Больше не видно на экране, тогда как в этих обстоятельствах они все еще есть. i.sstatic.net/ddp5kma4.png " />
В конкретном случае изображения я уже несколько раз сбросил колоду без проблем, несмотря на сброс колоды, вызывая проблему в других попытках игры (без кода. Изменение с тех пор), но ошибка была вызвана здесь уничтожением возврата, что также не вызывает проблему каждый раз). < /p>
Я помещаю печатные операторы после своих уничтожений (после копирования после копирования Код здесь) и, похоже, оба случая вызова уничтожения, которые вызывают его, но я не понимаю, почему
a) Проблема не возникает каждый раз, когда
b) он разрушает Карты, карты которых не помечают «Deckbutton» в DealFromDeck
c), объекты все еще «уничтожены», даже если они снова создаются все сначала < /p>
Здесь каждый метод Включает в себя «Уничтожить» в моем коде.public void DealFromDeck()
{
float xOffset = 1.7f;
string card;
UpdateSprite[] allCards = FindObjectsOfType();
if (deckLocation < (deck.Count))//Can't increment it if at end of deck
{
card = deck[deckLocation];
}
else//Reset when at end of deck
{
//Erase deck button children
foreach (UpdateSprite allCard in allCards)
{
if (allCard.transform.parent != null)
{
if (allCard.transform.parent.CompareTag("DeckButton"))
{
Destroy(allCard.gameObject);
}
}
}
deckLocation = 0;
deckZOffset = 0;
card = deck[deckLocation];
}
GameObject newCard = Instantiate(cardPrefab, new Vector3(deckButton.transform.position.x + xOffset, deckButton.transform.position.y, deckButton.transform.position.z - deckZOffset), Quaternion.identity, deckButton.transform);
newCard.transform.localScale = new Vector3(15, 15, 0);
newCard.GetComponent().sortingOrder = deckLocation;
newCard.name = card;
newCard.GetComponent().faceUp = true;
deckLocation++;
deckZOffset += 0.02f;
}
< /code>
Возврат лица (в моей игре пользователь может вернуть все карты лица на палубу, чтобы раскрыть новые) < /p>
public void ReturnFaceUps()//Button deckButton)
{
UpdateSprite[] cards = FindObjectsOfType();
//Lose 20 points for a reset if not needed
if(!cantMove)
{
game.score -= 20;
}
//Put face up cards back into deck
foreach (UpdateSprite card in cards)
{
Selectable cardAttr = card.GetComponent();
if (!cardAttr.inDeck && cardAttr.faceUp)//Face up tableau cards
{
foreach(List tableau in game.tableaus)
{
if (tableau.Contains(cardAttr.name))
{
tableau.Remove(cardAttr.name);
}
}
game.deck.Add(cardAttr.name);
}
}
//Reset deck offset
game.deckZOffset = 0;
//Delete all
foreach (UpdateSprite card in cards)
{
if (!card.CompareTag("DeckButton") && !card.CompareTag("Help") && !(card.name==("Card")))//Don't destroy deck button, help button or card prefab
{
Destroy(card.gameObject);
}
}
game.DealCards();
}
< /code>
Это не разрушает, но это то, что вызовы returnfaceups, и вы можете увидеть его в любом случае создания новых объектов.
Cards Deal Cards Tableau: < /p>
public void DealCards()
{
for (int i = 0;i
Подробнее здесь: [url]https://stackoverflow.com/questions/79428309/why-is-unity-randomly-making-my-objects-null-stating-that-they-are-destroyed[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия