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

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

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

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

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

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

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

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

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

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