【问题标题】:Why Won't Unity Let Me Use Animation For My Sprite?为什么 Unity 不让我为我的 Sprite 使用动画?
【发布时间】:2016-05-31 19:44:32
【问题描述】:

我正在为我的游戏制作倒数计时器,我需要为精灵设置动画:“3”、“2”、“1”、“Go!”。我确切地知道如何制作动画,所以这不是我的问题。我的问题是:为什么 Unity 不让我选择所有 4 个精灵并为它们设置动画?

如果您需要更多信息或其他图片,请告诉我。谢谢! :)

【问题讨论】:

  • 您在 Unity 中将 Invoke 用于计时器。
  • 您是否尝试创建在 4 个子图像之间转换的单个动画?
  • 嘿伙计们,我想通了。这是我最好的愚蠢。谢谢你的回复,我会支持你的 cmets @JoeBlow

标签: user-interface animation unity3d sprite unity5


【解决方案1】:

您不会为 sprite 设置动画,而是使用 Sprite 为组件 (SpriteRenderer) 设置动画。 sprite 是具有某些特殊属性的纹理,因此需要特别考虑。

您不需要为纹理设置动画,它只是一个图像,您有一组纹理可以交换以创建动画效果。

如果您想为您的 3-2-1-Go 设置动画,您首先需要创建一个 Sprite 游戏对象,然后为其分配一个 sprite 纹理,然后创建一个 Animator 和一个动画剪辑。

您的动画将在特定时间交换当前纹理,最有可能使用动画事件。

其实用脚本来做可能更容易:

// Drag sprites, make sure they are in order (3->2->1->Go)
public Sprite[] sprites; 
public SpriteRenderer sp;
int index = 0;

void Start()
{
     // Check your sprites and sp
     InvokeRepeating("SwapSprite", 1.0f,1.0f); // Start timer to swap each second
     sp.sprite = sprites[index]; // Set initial sprite
}

private void SwapSprite()
{
     if(++index == sprites.Length) // Increase the index and check we run out of sprites
     { 
         CancelInvoke(); 
         sp.enabled = false; // Remove the counter 
         this.enabled = false; // That scripts is no more useful (could be destroyed)
         return; 
     }
     sp.sprite = sprites[index]; // Set new sprite
}

【讨论】:

  • 我刚刚想通了,我的问题是我今天的想法完全错了!我必须单击 UI 图像,而不是单击 Sprite 进行动画处理。我花了几个小时试图弄清楚这一点,毕竟这很容易!啊!但是谢谢你的回答。我将其标记为正确,因为您花时间做出回应并且您知道自己在说什么。谢谢你:)
  • 我会保存该脚本以备将来需要! @Everts
猜你喜欢
  • 2020-08-15
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 2017-08-29
  • 1970-01-01
相关资源
最近更新 更多