c# - 在 UI 按钮中插入动态图像或 gif
问题描述
我尝试在 UI 按钮图像中放置动画 gif,但它没有移动。这可以在 UI 按钮图像中放置动画 gif 或移动图像吗?
解决方案
如果您没有 Unity 支持的视频格式,但您可以
WebM
从多个PNG
帧生成一个。它需要Adobe MediaEncoder
(或您找到的任何程序)从它们生成WebM
视频。Unity还支持其他视频格式,我专门使用 WebM 来支持透明度。如果您已经有Unity 支持的视频格式,您可以直接跳到第3 节。使用 Unity 中的动画在下面的 UI中
1. 将动画另存为 PNG 文件
我不知道你的动画究竟来自哪里,但你必须将每一帧保存为 PNG 文件。最好使用相应的名称后缀(例如frame_001.png
,,frame_002.png
...)。
2. 将 PNG 文件编码为 WebM 视频格式
使用 WebM_Premiere_v1.1.0.msi 为 Adobe Premiere 和 MediaEncoder 安装 WebM 编解码器,或从https://www.fnordware.com/WebM/下载
打开 AdobeMediaEncoder
3. 使用 Unity for UI 中的动画(也适用于其他视频格式)
将生成的文件(例如)导入您
[0001-0027].webm
的[0001-0027].webm.xmp
UnityProject。对于 importsettings 将它们设置为也许那是默认值(我不记得了;))。
在相应
Button
的 GameObject 上移除组件Image
RawImage
并用一个组件替换它确保在'字段
RawImage
中再次引用它。Button
Target Graphic
创建一个新的
RenderTexture
并将其用作组件
Texture
的RawImage
在场景中的任何地方(我只是在同一个对象上完成)添加一个
VideoPlayer
组件使其渲染到创建的
RenderTexture
并
VideoClip
选择导入的 webm(或其他格式)视频。然后你可以通过脚本开始视频......但我通常会制作它
Play On Awake
并且Loop
结果
请记住,这将在每个 RawImage 存在时创建一个额外的绘制调用,因此最好仅将它用于背景或临时可见图形。
所以你应该尽量少用这个。
推荐阅读
- java - 使用另一个 Java 应用程序获取和调用 Java 应用程序的主类
- python - PyCharm/Pyinstaller - 如何优化分发
- sql - 如果条件为真,PostgreSQL 更新,但根据另一个条件返回 id
- r - 返回 ggplot 散点图中所有组的回归线
- django - Django REST按日期序列化字段组
- elasticsearch - ElasticSearch:何时使用多字段
- javascript - Vue JS 动态路由器无响应
- kotlin - IntelliJ 中的 Kotlin 1.4.20 gradle kts 问题
- uwp - 为什么我的 UWP 应用程序中的表单/页面在运行时被截断(不反映设计时大小)?
- html - 使用回调 ref 修改 React 中的 scrollLeft 属性