Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 启用Animator会导致闪烁吗?_C#_Unity3d - Fatal编程技术网

C# 启用Animator会导致闪烁吗?

C# 启用Animator会导致闪烁吗?,c#,unity3d,C#,Unity3d,在Unity 3D(2D模式)中,我有一些与Animator链接的游戏对象,以及使用动画时间线制作的动画。动画最初被禁用: public GameObject car; Animator carAnim; void Start() { carAnim = car.GetComponent<Animator>(); carAnim.enabled = false; } 但是,当动画开始播放时,整个屏幕闪烁一次。如何消除闪烁?我认为问题在于您试图在运行时启用和禁用Animato

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

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

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

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

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

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

能否检查动画时间线开始值。可能是当你开始录制动画时,屏幕或游戏对象的位置可能发生了错误的移动。我仔细检查了所有动画。它们在0秒时具有关键帧。值得一提的是,没有动画的部分(例如背景)也会闪烁。这在Unity Editor和iOS上发生。关键帧在0秒不是问题,但游戏对象的初始值在0关键帧处。对我来说,每当我启动动画并尝试将其包导出到设备并运行时,它不会闪烁。如果该软件包在设备上运行良好,则可能是您的图形卡问题。您的动画仅更改精灵,还是更改时间轴中的任何其他属性?任何附加到动画开始的事件?仅供参考,根本没有动画组件。使用动画组件将导致警告,并且动画无法控制。请参阅,然后您应该在Mecanim中正确设置状态和转换,并且不要触摸Animator组件的“enabled”属性。更多信息
gameObject.GetComponent<Animation>().Play("MyAnimation");