【游戏开发实战】Unity解析和显示/播放GIF图片,支持http url,支持本地file://,支持暂停、继续播放

您所在的位置:网站首页 unity载入界面 【游戏开发实战】Unity解析和显示/播放GIF图片,支持http url,支持本地file://,支持暂停、继续播放

【游戏开发实战】Unity解析和显示/播放GIF图片,支持http url,支持本地file://,支持暂停、继续播放

2024-07-12 16:34| 来源: 网络整理| 查看: 265

文章目录 一、前言二、具体操作1、准备一张gif图片2、UniGifImage组件3、测试 三、结束语

一、前言

点关注不迷路,持续输出Unity干货文章。

嗨,大家好,我是新发。我们知道,Unity自身是不支持gif图片的显示,本文,我就给大家演示一下如何在Unity中显示gif图片吧。 本文最终效果: 在这里插入图片描述 本文Demo工程已上传到CodeChina,感兴趣的同学可自行下载学习。 地址:https://codechina.csdn.net/linxinfa/UnityShowGifDemo 注:我使用的Unity版本:2020.2.7f1c1 (64-bit)。 在这里插入图片描述

二、具体操作 1、准备一张gif图片

在这里插入图片描述 放在StreamingAssets文件夹中。 在这里插入图片描述

2、UniGifImage组件

(UniGifImage组件源码参见Demo工程) 创建一张RawImage,挂上UniGifImage组件,此时会自动挂上UniGifImageAspectController组件,如下: 在这里插入图片描述 UniGifImage组件提供了以下几个主要接口:

// 设置gif,内部会调用协程SetGifFromUrlCoroutine,url支持http/https和本地路径,本地路径默认从StreamingAssets文件夹读取 public void SetGifFromUrl(string url, bool autoPlay = true) // 设置gif public IEnumerator SetGifFromUrlCoroutine(string url, bool autoPlay = true) // 播放 public void Play() // 停止 public void Stop() // 暂停 public void Pause() // 继续 public void Resume()

设置一下UniGifImage组件的参数: 在这里插入图片描述 参数说明:

参数说明RawImage要渲染gif的目标RawImageImgAspectCtrlgif尺寸适配器,会根据RawImage适配最终gif显示的尺寸FilterMode纹理的过滤模式WrapMode纹理的环绕模式LoadOnStart是否在脚本Start时就加载gifLoadOnStartUrl脚本Start时加载的gif的url地址ROtateOnLoading是否在加载时旋转图片OutputDebgLog是否输出调试日志 3、测试

为了方便测试,制作一些简单的UI。 在这里插入图片描述 写个测试脚本

using System.Collections; using UnityEngine; using UnityEngine.UI; /// /// gif显示测试 /// public class UniGifTest : MonoBehaviour { public InputField gifUrlInput; public UniGifImage gifImage; public Button loadBtn; public Button playBtn; public Button stopBtn; public Button pauseBtn; public Button resumeBtn; /// /// 锁 /// private bool m_mutex; private void Start() { loadBtn.onClick.AddListener(() => { if (m_mutex || gifImage == null || string.IsNullOrEmpty(gifUrlInput.text)) { return; } m_mutex = true; StartCoroutine(ViewGifCoroutine()); }); playBtn.onClick.AddListener(() => { gifImage.Play(); }); stopBtn.onClick.AddListener(() => { gifImage.Stop(); }); pauseBtn.onClick.AddListener(() => { gifImage.Pause(); }); resumeBtn.onClick.AddListener(() => { gifImage.Resume(); }); } private IEnumerator ViewGifCoroutine() { yield return StartCoroutine(gifImage.SetGifFromUrlCoroutine(gifUrlInput.text)); m_mutex = false; } }

创建一个UniGifTest空物体,挂上UniGifTest脚本,赋值参数对象,如下: 在这里插入图片描述 运行Unity,效果如下: 在这里插入图片描述

三、结束语

完毕。 喜欢Unity的同学,不要忘记点击关注,如果有什么Unity相关的技术难题,也欢迎留言或私信~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3