【问题标题】:Enabling Animator causes flicker?启用 Animator 会导致闪烁?
【发布时间】:2015-05-14 20:52:53
【问题描述】:

在 Unity 3D(2D 模式)中,我有一些与 Animator 链接的游戏对象,以及使用 Animation Timeline 制作的动画。动画最初被禁用:

public GameObject car;
Animator carAnim;
void Start() {
  carAnim = car.GetComponent<Animator>();
  carAnim.enabled = false;
}

然后,通过输入事件,将动画设置为启用:

void Update() {
  if(Input.GetKeyDown(0)) {
    carAnim.enabled = true;
  }
}

但是,当动画开始播放时,整个屏幕会闪烁一次。如何消除闪烁?

【问题讨论】:

  • 您能检查一下您的动画时间轴起始值吗?当您开始录制动画时,屏幕或游戏对象的位置可能会错误地移动。
  • 我仔细检查了所有动画。他们在 0 秒时有关键帧。值得一提的是,没有动画的部分(例如背景)也会闪烁。这发生在 Unity 编辑器和 iOS 上。
  • 关键帧在 0 秒不是问题,但游戏对象的初始值在 0 关键帧对我来说,每当我开始动画尝试将其包导出到设备并运行时它都不会闪烁。如果该软件包在设备上运行良好,则可能是您的显卡问题。
  • 您的动画只改变精灵还是改变时间轴中的任何其他属性?动画开头附加了任何事件吗?

标签: c# unity3d


【解决方案1】:

我认为问题在于您试图在运行时启用和禁用 Animator 组件。 Animator 不是为这样使用而设计的。如果您想在某个时间点播放动画,只需启用 Animator,创建 2 个状态 - “Idle”和“YourAnimation”,在它们之间创建过渡并使用一些布尔参数控制它。

更简单的方法是使用 Animation 组件(如果您不需要 Mecanim 和状态之间的转换),您只需一行代码即可播放动画:

gameObject.GetComponent<Animation>().Play("MyAnimation");

【讨论】:

  • 仅供参考,根本没有动画组件。使用动画组件会导致警告和动画无法控制。见this
  • 那么你应该在 Mecanim 中正确设置你的状态和过渡,并且不要触摸 Animator 组件的“启用”属性。欲了解更多信息go here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 2014-03-24
相关资源
最近更新 更多