IEnumerator ChangeVisibilityCoroutine(bool visible) { float maxWidth = _rectTransform.rect.width; float visibleWidthLimit = maxWidth * 0.05F; float targetTextWidth = (visible ? 0.6F : 1.0F) * maxWidth; float targetCounterWidth = maxWidth - targetTextWidth; if (visible) { StartCoroutine(ChangeSizeCoroutine(consumeText, targetTextWidth, maxWidth)); StartCoroutine(ChangeSizeCoroutine(valueCounter, targetCounterWidth, maxWidth)); } else { StartCoroutine(ChangeSizeCoroutine(valueCounter, targetCounterWidth, maxWidth)); StartCoroutine(ChangeSizeCoroutine(consumeText, targetTextWidth, maxWidth)); } while (true) { yield return(new WaitForEndOfFrame()); if (visible) { if (valueCounter.GetWidth() > visibleWidthLimit) { break; } } else { if (valueCounter.GetWidth() < visibleWidthLimit) { break; } } } valueCounter.gameObject.SetActive(visible); }
bool ChangeSize(HorizontalSizeChanger sizeChanger, float newSize, float step) { float width = sizeChanger.GetWidth(); float delta = newSize - width; if (Mathf.Abs(delta) > step) { delta *= Speed * Time.deltaTime; sizeChanger.SetWidth(width + delta); return(true); } else { sizeChanger.SetWidth(newSize); return(false); } }