will gameObject.destroy()删除列表中的引用gameObject



如果我有:

List<GameObject> brickList;

每当我实例化砖的实例(这是一个预制的游戏对象)时,我都会将其放入列表中:

brickList.add(Instantiate(brick, transform, Quaternion.identity));

,如果我销毁了GameObject.Destroy()中的砖块:

private void OnTriggerEnter2D(Collider2D collision){
    if (collision.gameObject.CompareTag("Brick")){
         Destroy(collision.gameObject);
   }
}

这会在brickList中引入null的引用,然后将被摧毁的砖从渲染系统中取出?

砖将不再呈现。游戏对象上的游戏对象和组件将处于"破坏"状态。如果将游戏对象与nullbrickList[0] == null)进行比较,它将由于操作员的重载而返回true,即使对象不是真正的 null。如果组件已被破坏,则大多数属性和方法都将为您提供例外。如果您希望列表中的参考消失,则必须自己删除。

private void OnTriggerEnter2D(Collider2D collision){
    if (collision.gameObject.CompareTag("Brick")){
         Destroy(collision.gameObject);
         if (brickList.Containt(collision.gameObject)) {
             brickList.Remove(collision.gameObject);
         }
   }
}

yay将其删除,因为它将在列表中取消。

最新更新