Beispiel #1
0
        void DoCheckCollision()
        {
            if (collisionEvent == null)
            {
                return;
            }

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