Я предполагаю, что вы не можете просто использовать вместо этого компонент 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...
Выберите первый кадр вашей анимации и убедитесь, что PNG file sequence
включен.
В представлении Queue
щелкните текущий целевой кодек
В качестве формата выберите WebM
(доступно толькопосле установки плагина в шаге 1.)
в разделе Image Settings
вы можете настроить параметрыили просто нажмите Match Source
В кодеке Settings
перейдите на VP8
, поскольку Unity неподдержка VP9
(пока?)
Возможно, вы захотите внести дополнительные изменения, но неСамое важное: Включить Include Alpha Channel
Когда вы думаете, что все готово, нажмите Ok
в нижней частиокно
В представлении Queue
нажмите на символ воспроизведения, чтобы начать кодирование
после завершения и закрытия Adobe MediaEncoder вы найдете результат в той же папке, в которой находятся ваши исходные кадры, в
3.Наконец, используйте WebM «GIF» с прозрачностью в Unity
Импортируйте два файла результатов в ваш проект Unity.
В Assets
do щелкните правой кнопкой мыши -> Создать -> RenderTexture
Имяэто и изменить размер может быть (остальное должно быть в порядке.)
Где-то в вашей сцене на диспетчере GameObject есть компонент VideoPlayer
.Вам нужен только один (для каждой текстуры GIF).Здесь используйте импортированный файл WebM
как VideoClip
и созданный RenderTexture из шага 2. как Target Texture
.
Включить Loop
и (если хотите) Play On Awake
(в противном случае вам придется вызывать Play вручную.)
Вместо компонента Image
используйте компонент RawImage
и как Texture
ссылка на созданное RenderTexture
из шага 2.
Теперь у вас есть прозрачная GIF-анимация с использованием вашегооригинальные рамки PNG в Unity
Только для разницы в размере файла:
- Отдельные файлы PNG (Я использовал 24) для меня около 4,5 МБ в общей сложности
- файл WebM имеет около 0,5 МБ.Так что это делает его более или менее в 10 раз меньше.
Представьте себе, сколько места вы могли бы сэкономить, если бы использовали это вместо 500 файлов PNG!