【问题标题】:How can I animate a circular scrolling list in Unity?如何在 Unity 中为循环滚动列表设置动画?
【发布时间】:2017-04-27 13:07:34
【问题描述】:

这里几乎是新手,我正在尝试为 UI 创建一个循环滚动列表,但我被卡住了,我不确定我是否使用了正确的工具。

我想要获得的是一个菜单,显示三个声音,垂直排列,中间的一个被突出显示。

当用户按下向上(或向下)箭头时,声音向下(或向上)移动,最后一个声音淡出,另一个声音(我从字符串数组中挑选)出现在第一个槽中。 [下图中的示例]

目前我已经创建了五个对象“槽”,它们是一个带有文本组件的变换,第一个和最后一个被设置为 alpha 为 0;第二,第三和第四是可见的。 当用户按下时,对象向下滚动,第五个位置(不可见)的文本转到第一个位置(仍然不可见),并更新他的 .text 字段以包含正确的声音。 我的问题是使选项滚动的动画。 如果我为每个插槽使用状态机行为,我不能只为每个位置设置一个状态,因为与状态相关的运动应该来自不同的侧面(例如:一个对象可以从 4 和 2 到达位置 3)。 所以我尝试用单帧制作动画,让状态之间的混合来完成这项工作

示例和第一个状态机:

(翻译由触发器 goUp/goDown 激活)

但当然我不能统一使用动画面板中的曲线,而且混合感觉有点笨拙。

所以我制作了一个更复杂的 SM,每个状态都与动画相关联(所以我的状态是:0to1、1to2、...、1to0、2to1 等)

过度纠结的状态机:

(我从 FadeIn 中删除了翻译以增加“可读性”)

但我觉得我选择了一种过于复杂且不易扩展的方式来创建一个相对简单的东西。

我是在做正确的事,还是应该考虑放弃 SM 并通过脚本处理所有事情(最重要的是,通过脚本创建动画)?

【问题讨论】:

  • 您在动画中管理什么?只有职位?如果是这样,在我看来,使用缓动方程可能会更容易。 (查看罗伯特彭纳的)
  • 我管理位置和 alpha,因为当第一个显示的项目朝向顶部时,它变得不可见,最后一个显示的项目也是如此。谢谢你的建议,我一定会去看看的!

标签: user-interface unity3d


【解决方案1】:

我同意 tweener 的建议。它会简化很多。 这是补间的不错插件之一 http://dotween.demigiant.com 它具有用于转换游戏对象的扩展,例如移动、旋转、缩放。它还为其他组件公开了许多不错的功能,包括更改 alpha 的颜色。 所以,我想你会发现它很有用。

【讨论】:

  • 谢谢你的建议,我会用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多