删除队列中的对象时,该对象会发生什么情况



我有一个队列,它可以容纳名为Customer:的自定义类

private Queue<Customer> workqueue = new Queue<Customer>();

客户类型的游戏对象将自己添加到队列中:

workqueque.Enqueue(this);

现在,相同的GameObject删除自己与:

Destroy(this);

那么,当我现在尝试退出队列时,队列中的条目会发生什么呢?谢谢

当你尝试Dequeue时,它会发现一个空引用并抛出一个MissingReferenceException

MissingReferenceException:类型为"XXXXX"的对象已被销毁,但您仍在尝试访问它。您的脚本应该检查它是否为null,或者不应该销毁该对象。

正如异常所指出的,处理此问题的常见方法是执行null检查。使用您的示例:

private Queue<Customer> workQueue = new Queue<Customer>();
private Customer newCustomer = new Customer();
workQueque.Enqueue(newCustomer);
Destroy(newCustomer);
if (newCustomer != null)
{
workQueue.Dequeue();
}

一旦你开始对多个对象进行排队,这显然会变得有点复杂,但我认为你已经明白了。

如果将方法分配给事件,然后销毁包含该方法的组件,也会发生类似的情况。如果现在触发了此事件,那么它将尝试访问不存在的内容并抛出错误。

相关内容

最新更新