Я предполагаю, что вы не можете просто использовать вместо этого компонент VideoPlayer
и вместо этого загружать видео, а не файл PNG для каждого кадра по той же причине, которую я когда-то делал: Альфа-канал.
В любом случае, импортировать каждый кадр в виде файла PNG и переключать спрайт в каждом кадре очень неэффективно!
Так что, если речь не идет об альфа-канале, просто используйте VideoPlayer свидеоклип и перейдите к шаг 3.2. здесь, используя видеофайл вместо одного кадра / файла WebM.
Если проблема заключается в альфа-канале:
Однажды я нашел решение для получения GIF-подобной текстуры, но для сохранения прозрачности
требуется Adobe MediaEncoder (можно бесплатно протестировать в течение 30 дней).
1.Где-то получить единичные изображения в формате PNG
Я отрисовал мое с помощью Blender3D, но вы, конечно, можете использовать любые кадры PNG с (или без) прозрачностью.
У вас, похоже, уже есть такие.Однако файлы рамок должны иметь последовательные нумерованные имена, например, frame_001.png
, frame_002.png
и т. Д.
2.Кодируйте файлы PNG в WebM
видеоформат
Установите кодек WebM для Adobe Premiere и MediaEncoder
Откройте Adobe MediaEncoder
Перейдите на File
-> AddSource...
![enter image description here](https://i.stack.imgur.com/KfI5U.png)
Выберите первый кадр вашей анимации и убедитесь, что PNG file sequence
включен.
![enter image description here](https://i.stack.imgur.com/tUiE8.png)
В представлении Queue
щелкните текущий целевой кодек
![](https://i.stack.imgur.com/r7pAM.png)
В качестве формата выберите WebM
(доступно толькопосле установки плагина в шаге 1.)
![enter image description here](https://i.stack.imgur.com/Zna17.png)
в разделе Image Settings
вы можете настроить параметрыили просто нажмите Match Source
![enter image description here](https://i.stack.imgur.com/EOtJb.png)
В кодеке Settings
перейдите на VP8
, поскольку Unity неподдержка VP9
(пока?)
![enter image description here](https://i.stack.imgur.com/1lPWn.png)
Возможно, вы захотите внести дополнительные изменения, но неСамое важное: Включить Include Alpha Channel
![enter image description here](https://i.stack.imgur.com/QTnu5.png)
Когда вы думаете, что все готово, нажмите Ok
в нижней частиокно
![enter image description here](https://i.stack.imgur.com/0AbND.png)
В представлении Queue
нажмите на символ воспроизведения, чтобы начать кодирование
![enter image description here](https://i.stack.imgur.com/BHQJu.png)
после завершения и закрытия Adobe MediaEncoder вы найдете результат в той же папке, в которой находятся ваши исходные кадры, в
![enter image description here](https://i.stack.imgur.com/iUeOO.png)
3.Наконец, используйте WebM «GIF» с прозрачностью в Unity
Импортируйте два файла результатов в ваш проект Unity.
В Assets
do щелкните правой кнопкой мыши -> Создать -> RenderTexture
![enter image description here](https://i.stack.imgur.com/Fw9UH.png)
Имяэто и изменить размер может быть (остальное должно быть в порядке.)
Где-то в вашей сцене на диспетчере GameObject есть компонент VideoPlayer
.Вам нужен только один (для каждой текстуры GIF).Здесь используйте импортированный файл WebM
как VideoClip
и созданный RenderTexture из шага 2. как Target Texture
.
Включить Loop
и (если хотите) Play On Awake
(в противном случае вам придется вызывать Play вручную.)
Вместо компонента Image
используйте компонент RawImage
и как Texture
ссылка на созданное RenderTexture
из шага 2.
![enter image description here](https://i.stack.imgur.com/PTM1g.png)
Теперь у вас есть прозрачная GIF-анимация с использованием вашегооригинальные рамки PNG в Unity
![enter image description here](https://i.stack.imgur.com/9cH5d.gif)
Только для разницы в размере файла:
- Отдельные файлы PNG (Я использовал 24) для меня около 4,5 МБ в общей сложности
- файл WebM имеет около 0,5 МБ.Так что это делает его более или менее в 10 раз меньше.
Представьте себе, сколько места вы могли бы сэкономить, если бы использовали это вместо 500 файлов PNG!