public Action <GameObject> collisionEvent;           //在这,用一个GameObject的泛型表示有一个参数是GameObject的委托
    void DoCheckCollision()
    {
        if (collisionEvent == null)
        {
            return;
        }

        GameObject[] colliderGameObjects = QuadtreeWithActionObject.CheckCollision(_leaf);
        foreach (GameObject colliderGameObject in colliderGameObjects)
        {
            if (collisionEvent == null)
            {
                break;
            }
            collisionEvent(colliderGameObject);
        }
        //每次发出事件进行一次判断,原因是这里循环多次发出事件,但有时候有的组件接到事件后各种操作最后取消了订阅,如果正巧所有订阅都取消了,这里继续循环的时候就会出错,所以要每发出一次判断一次
    }
 private void OnEnable()
 {
     UpdateLeaf();
     QuadtreeWithActionObject.SetLeaf(_leaf);
 }
 private void OnDisable()
 {
     QuadtreeWithActionObject.RemoveLeaf(_leaf);
 }