如果我有:
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
的引用,然后将被摧毁的砖从渲染系统中取出?
砖将不再呈现。游戏对象上的游戏对象和组件将处于"破坏"状态。如果将游戏对象与null
(brickList[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将其删除,因为它将在列表中取消。