Как исправить запаздывание сопрограммы при экспорте на андроид из единства? - PullRequest
1 голос
/ 08 июля 2019

Я работаю над игрой, в которой есть некоторые сопрограммы, которые заставляют персонажа прыгать, атаковать и т. Д., Вот пример прыгучей сопрограммы:

private IEnumerator Jump()
{
    rb.velocity = Vector2.zero;
    moveHorizontal = 0f;
    rb.gravityScale = 0f;
    actualPlatform.actualPlatform = null;
    anim.SetBool("jumping", true);
    currentPlayerState = PlayerState.jump;
    float playerMoveY = transform.position.y + jumpHigh;
    float actualPlayerY = transform.position.y;

    while (transform.position.y <= playerMoveY)
    {
        transform.position = new Vector2(transform.position.x, actualPlayerY);
        actualPlayerY = actualPlayerY + 0.1f;
        yield return null;
    }


    rb.gravityScale = 1f;
    dustEffectReady = true;
}

на рабочем столе, эта сопрограмма работает хорошо и быстро, нокогда я собираю apk и пробую его, он медленный и отстающий, может быть, это что-то про FPS?кто-нибудь знает как это решить?я должен просто использовать обычные функции?

РЕДАКТИРОВАТЬ: я использую эту библиотеку, чтобы использовать метод салфетки (функция, которая вызывает эту сопрограмму) https://unity3d.college/2018/04/24/mobile-swipe-detection-in-unity3d/

затем я вызываю его сэта функция:

private void SwipeDetector_OnSwipe(SwipeData data)
{
    if (data.Direction == SwipeDirection.Up && isGrounded && currentPlayerState == PlayerState.idle)
        StartCoroutine(Jump());
    else if (data.Direction == SwipeDirection.Down && currentPlayerState == PlayerState.idle)
        StartCoroutine(SlideDown());
    else if (data.Direction == SwipeDirection.Left && currentPlayerState == PlayerState.idle)
        StartCoroutine(weaponController.Attack());
    else if (data.Direction == SwipeDirection.Right && currentPlayerState == PlayerState.idle)
        StartCoroutine(weaponController.Attack());
}
...