2016-05-31 1 views
0

Я делаю таймер обратного отсчета для своей игры, и мне нужно анимировать спрайты: «3», «2», «1», «Go!». Я точно знаю, как сделать эту анимацию, так что это не моя проблема. Моя проблема: почему Unity не позволит мне выбрать все 4 спрайта и оживить их? Screenshot 1Почему я не позволю себе использовать анимацию для моего спрайта?

Screenshot 2

Если вам нужна дополнительная информация или другую картину, просто дайте мне знать. Спасибо! :)

+1

использовать Invoke для таймеров в Unity. – Fattie

+0

Вы пытаетесь создать единую анимацию, которая переходит между 4 суб-изображениями? – LeftRight92

+0

Эй, ребята, я понял это. Это была моя глупость в лучшем виде. Спасибо за ваш ответ, хотя, и я отвечу ваши комментарии @JoeBlow –

ответ

0

Вы не анимации спрайтов, вы анимируете компонент (SpriteRenderer) с помощью Sprite. Спрайт - это текстура с некоторым специальным атрибутом, поэтому она рассматривается конкретно.

Вы не анимируете текстуру, это просто изображение, у вас есть набор текстур, которые вы меняете, чтобы создать эффект анимации.

Если вы хотите анимировать свой 3-2-1-Go, вам сначала нужно создать объект игры Sprite, затем назначьте ему текстуру спрайта, а затем создайте аниматор и анимационный клип.

Ваша анимация будет менять текущую текстуру в определенное время, скорее всего, с помощью анимационного события.

На самом деле, это может быть проще сделать это с помощью сценария:

// 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 
} 
+0

Я только что понял, и моя проблема в том, что я думал совершенно неправильно сегодня! Вместо того, чтобы нажимать на Sprites для анимации, я должен нажать на изображение пользовательского интерфейса. Я потратил часы, пытаясь понять это, и было так просто! Ughh! Но спасибо за ваш ответ. Я собираюсь отметить это как правильно, так как вы нашли время, чтобы ответить, и поскольку вы знаете, о чем говорите. Спасибо :) –

+0

И я сохраню этот скрипт в случае необходимости в будущем! @Everts –