首页 > 解决方案 > 在 UI 按钮中插入动态图像或 gif

问题描述

我尝试在 UI 按钮图像中放置动画 gif,但它没有移动。这可以在 UI 按钮图像中放置动画 gif 或移动图像吗?

标签: c#unity3dgame-development

解决方案


  • 如果您没有 Unity 支持的视频格式,但您可以WebM从多个PNG帧生成一个。它需要Adobe MediaEncoder(或您找到的任何程序)从它们生成WebM视频。Unity还支持其他视频格式,我专门使用 WebM 来支持透明度。

  • 如果您已经有Unity 支持的视频格式,您可以直接跳到第3 节。使用 Unity 中的动画在下面的 UI

1. 将动画另存为 PNG 文件

我不知道你的动画究竟来自哪里,但你必须将每一帧保存为 PNG 文件。最好使用相应的名称后缀(例如frame_001.png,,frame_002.png...)。

2. 将 PNG 文件编码为 WebM 视频格式

  1. 使用 WebM_Premiere_v1.1.0.msi 为 Adob​​e Premiere 和 MediaEncoder 安装 WebM 编解码器,或从https://www.fnordware.com/WebM/下载

  2. 打开 Adob​​eMediaEncoder

  3. 转到File->AddSource...
    在此处输入图像描述

  4. 选择动画的第一帧。例如 ./Source/2.BlenderOutput
    在此处输入图像描述

  5. Queue视图中单击当前目标编解码器
    在此处输入图像描述

  6. 作为格式选择WebM
    在此处输入图像描述

  7. 在该Image Settings部分中,您可以调整设置或只需单击Match Source
    在此处输入图像描述

  8. 在编解码器Settings中切换到VP8因为 Unity 不支持VP9(还没有?)
    在此处输入图像描述

  9. 您可能需要进行进一步的调整,但最重要的是:启用Include Alpha Channel
    在此处输入图像描述

  10. 当你认为你已经完成Ok时,在窗口底部被击中
    在此处输入图像描述

  11. 返回Queue视图单击播放符号开始编码
    在此处输入图像描述

  12. 完成并关闭 Adob​​eMediaEncoder 后,您将在源帧所在的同一文件夹中找到结果
    在此处输入图像描述

3. 使用 Unity for UI 中的动画(也适用于其他视频格式)

  1. 将生成的文件(例如)导入您[0001-0027].webm[0001-0027].webm.xmpUnityProject。对于 importsettings 将它们设置为

    在此处输入图像描述

    也许那是默认值(我不记得了;))。

  2. 在相应Button的 GameObject 上移除组件Image

    在此处输入图像描述

    RawImage并用一个组件替换它

    在此处输入图像描述

    确保在'字段RawImage中再次引用它。ButtonTarget Graphic

    在此处输入图像描述

  3. 创建一个新的RenderTexture

    在此处输入图像描述

    并将其用作组件TextureRawImage

    在此处输入图像描述

  4. 在场景中的任何地方(我只是在同一个对象上完成)添加一个VideoPlayer组件

    在此处输入图像描述

    使其渲染到创建的RenderTexture

    在此处输入图像描述

    VideoClip选择导入的 webm(或其他格式)视频。

    在此处输入图像描述

    然后你可以通过脚本开始视频......但我通常会制作它Play On Awake并且Loop

    在此处输入图像描述


结果

在此处输入图像描述


请注意,正如API中的 Unity 所述 RawImage

请记住,这将在每个 RawImage 存在时创建一个额外的绘制调用,因此最好仅将它用于背景或临时可见图形。

所以你应该尽量少用这个。


推荐阅读