Я использую функцию DOShake внутри сопрограммы, которая запускается пользователем, и не понимаю, почему у меня возникают такие проблемы с производительностью.

Здесь приведен код, из которого вызывается функция. Это анимация зарядки удара: я перемещаю игровой объект «перчатка» обратно с помощью DOLocalMove и встряхиваю его дочерний элемент (который содержит только реальный спрайт)
Vector3 gloveLocalPosition = Transform.localPosition; Vector3 pointerToGlove = Transform.position - (Vector3)Input.PointerPosition; Vector3 chargeOffset = pointerToGlove.normalized * ChargeMaxDistance; var Shake = Transform.GetChild(0).DOShakePosition(FullChargeSeconds, ChargeVibration, 50, 90, false, false, ShakeRandomnessMode.Harmonic); var moveBack = Transform.DOLocalMove(new Vector2(1.2f * Mathf.Sign(transform.localPosition.x), -0.35f), FullChargeSeconds).SetEase(ChargeEaseType).SetAutoKill(false); var fullChargeShake = Transform.GetChild(0).DOShakePosition(30, FullChargeVibration, 50, 90, false, false, ShakeRandomnessMode.Harmonic).SetLoops(-1).SetAutoKill(false); вар последовательность = DOTween.Sequence(); последовательность.Append(moveBack).Join(shake).SetAutoKill(false).OnComplete( () => fullChargeShake.Play() ).Play(); доходность возврата нового WaitWhile (IsPunchButtonHeld); float chargePercentage = moveBack.ElapsedPercentage(); последовательность?.Kill(); FullChargeShake?.Kill(); Transform.GetChild(0).localPosition = Vector3.zero; ...
Мобильная версия