private void ChangeInformationEventHandler(InformationUIData data) { switch (data.ChangeType) { case InformationUIChangeType.Immediately: textInformation.text = data.Text; break; case InformationUIChangeType.Animate: var rectTransform = GetComponent <RectTransform>(); var currentPosition = rectTransform.anchoredPosition; var topPosition = Vector2.zero; var distance = Mathf.Abs(topPosition.y - currentPosition.y); var destination = topPosition.AddY(distance + textInformation.rectTransform.sizeDelta.y + padding); var dataDuration = Math.Abs(data.Duration) < 0.0001f ? 0.5f : data.Duration * 0.5f; rectTransform.DOAnchorPos(destination, dataDuration) .OnComplete(() => { textInformation.text = data.Text; rectTransform.DOAnchorPos(currentPosition, dataDuration); }); break; default: throw new ArgumentOutOfRangeException(); } onChange.Invoke(); }
public static InformationUIData SetDuration(this InformationUIData data, float duration) { data.Duration = duration; return(data); }