MissingReferenceException: объект типа UnityEngine.GameObject был уничтожен, но вы все еще пытаетесь получить к нему досC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 MissingReferenceException: объект типа UnityEngine.GameObject был уничтожен, но вы все еще пытаетесь получить к нему дос

Сообщение Anonymous »

Встроенная система событий для пользовательского интерфейса Unity продолжает пытаться получить доступ к кнопке после того, как я использовал Destroy() для ее игрового объекта. он останавливается и не начинается снова, когда я делаю паузу, но в противном случае будет продолжаться в каждом кадре. объект - это просто щелчок правой кнопкой мыши-> Пользовательский интерфейс -> кнопка - текстовая сетка pro.
Ниже приведена функция, которую выполняет кнопка, и функция для создания кнопки (в этом порядке)

Код: Выделить всё

    public void makeProgram(int i, Button button)
{
GameObject obj = Instantiate(ProgramObject, programHolder);
programs.Add(obj.GetComponent
());
obj.GetComponent().gameManager = this;
obj.GetComponent().localPosition = button.transform.localPosition;
Destroy (button.gameObject);
}
public void makeButton(int i)
{
Button button = Instantiate(ProgramBuyButton, programHolder)
.GetComponent();
button.name = i+"";
button.GetComponent().localPosition = Tools.makeProgramPosition(i - 1);
button.onClick.AddListener(() => makeProgram(i, button));
}
Ошибка ссылается на InputSystemUIInputModule:476, вторую строку в следующем коде.

Код: Выделить всё

            // now issue the enter call up to but not including the common root
Transform oldPointerEnter = eventData.pointerEnter?.transform;
eventData.pointerEnter = currentPointerTarget;
Проблема в том, что это не позволяет пользователю взаимодействовать с любыми другими объектами пользовательского интерфейса.
(здесь ошибка в Pastebin, потому что я не знаю, стоит ли помещать это сюда)
Я пытался найти способ «безопасно» уничтожить кнопку, но не могу найти ничего, что связано с системой событий, мне хочется отодвинуть ее от курсора и использовать сопрограмму, чтобы уничтожить ее после немного (отредактируйте: я тестировал это, и это работает, но все же хотелось бы более приятного решения) работало бы, но также не было бы самым элегантным, и я хочу найти лучший способ справиться с этим. Спасибо за чтение, и я надеюсь, что для этого есть лучшее решение.

Подробнее здесь: https://stackoverflow.com/questions/791 ... t-has-been
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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