我正在为2D游戏尝试新的统一3D选项。我正在尝试创建根据我所做的操作而改变的背景。因此,如果我按下按钮一个,我会得到精灵一个作为背景,如果两个我得精灵二。由于我有32个选项,我想出最好的方法是拥有一个Animator,根据按钮点击改变帧。所以我创建了动画师和动画。但问题是我无法设置停止动画显示选定框架的时间。
我这样想:
Animator ani=background.GetComponent<Animator>();
ani.animation["field_back_anim"].time=0.5f;
ani.speed=0;
但是在第二行失败时出现了这个错误:
MissingComponentException: There is no 'Animation' attached to the "background" game object, but a script is trying to access it.
You probably need to add a Animation to the game object "background". Or your script needs to check if the component is attached before using it.
但是,如果我没有代码,动画只会播放所有16帧。所以我认为毕竟有动画。
在后台GameObject上我首先有两个组件是精灵渲染器,第二个是动画师。当我在Animator视图中打开animator时,我看到绿色矩形表示任何状态,黄色表示“field_back_anim”。我不知道我做错了什么。
除了执行以下操作的任何其他解决方案之外,我也会这样做。
谢谢!
答案 0 :(得分:2)
动画师组件用于控制许多动画片段之间的转换。如果您要在游戏对象上播放动画片段,动画组件是正确的,不是动画师。删除动画师并将动画组件添加到检查器中的后台游戏对象中。如果将animation属性设置为field_back_anim,则您的游戏对象将具有良好的动画效果。操作代码应如下所示进行更改。
Animation ani = background.GetComponent<Animation>();
ani["field_back_anim"].time = 0.5f;
ani["field_back_anim"].speed = 0;