gameObject.Destroy()会删除列表中的referanced gameObject吗?

arm*_*ong 3 c# unity-game-engine

如果我有:

List<GameObject> brickList;
Run Code Online (Sandbox Code Playgroud)

每次我实例化一个砖块实例(这是一个预制的gameObject)时,我会把它放到列表中:

brickList.add(Instantiate(brick, transform, Quaternion.identity));
Run Code Online (Sandbox Code Playgroud)

如果我通过以下方式销毁List中的砖块GameObject.Destroy():

private void OnTriggerEnter2D(Collider2D collision){
    if (collision.gameObject.CompareTag("Brick")){
         Destroy(collision.gameObject);
   }
}
Run Code Online (Sandbox Code Playgroud)

会不会使在参考brickListnull,并采取销毁砖出来的渲染系统的?

小智 6

砖块将不再渲染.游戏对象和游戏对象上的组件将处于"破坏"状态.如果将游戏对象与null(brickList[0] == null)进行比较,它将true因操作符重载而返回- 即使对象不是真的 null.如果组件已被销毁,那么调用Unity组件的大多数属性和方法都会给你一个例外.如果您希望列表中的引用消失,则必须自行删除它.