Как я могу заставить спрайты переходить каждые 10 секунд на новый спрайт? - PullRequest
0 голосов
/ 08 июля 2019

Я создаю сцену кредитов для моей игры Unity3D и испытываю проблемы с фоновыми изображениями. У меня есть 5 спрайтов, которые я хочу использовать для фоновых изображений. Я довольно новичок в C #, так может кто-нибудь помочь мне сделать скрипт для замены спрайтов каждые 10-15 секунд?

Ответы [ 2 ]

2 голосов
/ 08 июля 2019

Звучит так, как вы хотите анимация .

Редактор анимации Unity позволит вам создать анимацию для любого свойства любого присоединенного компонентав GameObject.Это включает в себя изменение его спрайта.

Добавьте свойство, наведите его на компонент спрайта и создайте ключевые кадры каждые 10 секунд на временной шкале.На этих ключевых кадрах измените изображение спрайта.

Сохранить.Вот и все!

1 голос
/ 08 июля 2019

Звучит как идеальное использование для сопрограмм: https://docs.unity3d.com/Manual/Coroutines.html

Вот примерный пример того, как это можно сделать.

public List<Sprite> spritesToSwap; // contains all the sprites to loop through

IEnumerator SwapSprites() {
    int spriteIndex = 0;
    while (true) {
        gameObject.GetComponent<SpriteRenderer>().sprite = spritesToSwap[spriteIndex];
            // ^ replace the sprite
        spriteIndex++;
        if (spriteIndex == spritesToSwap.Count) spriteIndex = 0;
            // ^ loop back to first sprite
        yield return new WaitForSeconds(10f); // adjust this time as desired
    }
}

Позвоните StartCoroutine(SwapSprites()), когда хотите запустите его и StopCoroutine(SwapSprites()), когда / если вы хотите закончить его.

...