在Unity中,GameObject可以被销毁。
以下是场景:
1. 实例化GameObjectA和GameObjectB 2. 给GameObjectA添加一个脚本(这个脚本可以持有其他GameObject的引用) 3. 在GameObjectA的脚本中找到并持有GameObjectB的引用。
从这里开始一切都很顺利。我们可以对GameObjectB进行任何操作。
4. 通过GameObject.Destroy销毁GameObjectB。
在这里,当我们从GameObjectA的脚本中访问GameObjectB时,它将为空。
因为GameObjectB已经被销毁,所以无法访问任何方法、字段和属性。
问题是他们怎么做到的呢?
如果你仔细想一想,纯C#对象GC不会回收实例,如果有人保留了该实例的引用。
我知道Unity有他们的包装层来处理这些对象。
但我想知道它是如何工作的?如何在C#中实现?
以下是场景:
1. 实例化GameObjectA和GameObjectB 2. 给GameObjectA添加一个脚本(这个脚本可以持有其他GameObject的引用) 3. 在GameObjectA的脚本中找到并持有GameObjectB的引用。
从这里开始一切都很顺利。我们可以对GameObjectB进行任何操作。
4. 通过GameObject.Destroy销毁GameObjectB。
在这里,当我们从GameObjectA的脚本中访问GameObjectB时,它将为空。
因为GameObjectB已经被销毁,所以无法访问任何方法、字段和属性。
问题是他们怎么做到的呢?
如果你仔细想一想,纯C#对象GC不会回收实例,如果有人保留了该实例的引用。
我知道Unity有他们的包装层来处理这些对象。
但我想知道它是如何工作的?如何在C#中实现?