我正在使用iTween为每个主菜单元素提供动画。 但是动画并没有按照欲望的想法播放,正在运行一些不同的东西,所以我对此感到困惑。
我想玩游戏标题,使用iTween移动动画将动画从1200个单位移动到0个单位。但是类似这样,我得到了一个结果-它在-540单位上停止运行:
我为UI Image移动动画编写了这种代码:
iTween.MoveTo (ballTitleObj, iTween.Hash ("x", 0f, "speed", 100f, "delay", 1f));
我知道iTween可以与Transform组件一起工作,而UI元素可以与RectTransform一起工作,但是我需要做什么解决方案?
答案 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网站上