private void RemoveCallback()
        {
            if (cachedProxy == null)
            {
                return;
            }

            switch (collision)
            {
            case Collision2DType.OnCollisionEnter2D:
                cachedProxy.RemoveCollision2DEventCallback(CollisionEnter2D);
                break;

            case Collision2DType.OnCollisionStay2D:
                cachedProxy.RemoveCollision2DEventCallback(CollisionStay2D);
                break;

            case Collision2DType.OnCollisionExit2D:
                cachedProxy.RemoveCollision2DEventCallback(CollisionExit2D);
                break;

            case Collision2DType.OnParticleCollision:
                cachedProxy.RemoveParticleCollisionEventCallback(ParticleCollision);
                break;
            }
        }
        private void RemoveCallback()
        {
            if (cachedProxy == null)
            {
                return;
            }

            switch (collision)
            {
            case CollisionType.OnCollisionEnter:
                cachedProxy.RemoveCollisionEventCallback(CollisionEnter);
                break;

            case CollisionType.OnCollisionStay:
                cachedProxy.RemoveCollisionEventCallback(CollisionStay);
                break;

            case CollisionType.OnCollisionExit:
                cachedProxy.RemoveCollisionEventCallback(CollisionExit);
                break;

            case CollisionType.OnParticleCollision:
                cachedProxy.RemoveParticleCollisionEventCallback(ParticleCollision);
                break;

            case CollisionType.OnControllerColliderHit:
                cachedProxy.RemoveControllerCollisionEventCallback(ControllerColliderHit);
                break;
            }
        }