Unity UI 元素移动动画使用iTween

Unity UI Elements Move Animation Using iTween

我使用 iTween 为每个主菜单元素提供动画。 但是动画并没有按照愿望播放,不同的是 运行 所以我对这个问题感到困惑以寻求解决方案。

我想播放游戏标题,使用 iTween 移动动画将动画从 1200 单位移动到 0 单位。但是像这样,我得到了一个结果——它在 -540 个单位上停止了:

这种代码,我为UI写过图片移动动画:

iTween.MoveTo (ballTitleObj, iTween.Hash ("x", 0f, "speed", 100f, "delay", 1f));

我知道 iTween 与 Transform 组件一起工作,UI 元素与 RectTransform 一起工作,但我需要做什么来解决这个问题?

好的,现在花足够的时间来解决这个问题,我至少找到了一个解决方案。

我开始使用 DOTween 而不是 iTween: DOTween - Documentation

它内置包含对 Unity UI 动画的支持,我可以在项目中轻松实现。这是对我有用的代码行:

ballTitle.DOAnchorPosX (0f, 1f, false).SetDelay (0.5f).SetEase(Ease.OutBack);

首先获取标题的RectTransform

this.titleRectTransform = ballTitleObj.GetComponent<RectTransform>();

然后,调用iTween.ValueTo,因为你不想改变变换,你需要改变RectTransform

iTween.ValueTo(ballTitleObj, iTween.Hash(
    "from", this.titleRectTransform.anchoredPosition,
    "to", new Vector2(0, this.titleRectTransform.anchoredPosition.y),
    "speed", 100f,
    "delay", 1f,
    "onupdatetarget", this.gameObject, 
    "onupdate", "MoveBallTitle"));
}

并且在您调用 iTween.ValueTo 的同一个 class 中,您需要定义一个 MoveBallTitle 方法来更新 anchoredPosition:

public void MoveBallTitle(Vector2 position){
    this.titleRectTransform.anchoredPosition = position;
}

此答案基于 this answer Unity 问答网站