Unity UI元素使用iTween移动动画

时间:2018-10-18 11:58:05

标签: c# unity3d itween

我正在使用iTween为每个主菜单元素提供动画。 但是动画并没有按照欲望的想法播放,正在运行一些不同的东西,所以我对此感到困惑。

我想玩游戏标题,使用iTween移动动画将动画从1200个单位移动到0个单位。但是类似这样,我得到了一个结果-它在-540单位上停止运行: enter image description here

我为UI Image移动动画编写了这种代码:

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

我知道iTween可以与Transform组件一起工作,而UI元素可以与RectTransform一起工作,但是我需要做什么解决方案?

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

首先,获取标题的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的同一类中,您需要定义一个MoveBallTitle方法来更新anchoredPosition:

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

此答案基于this answer在Unity Q&A网站上