一、前言
点关注不迷路,持续输出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的目标RawImage |
ImgAspectCtrl | gif尺寸适配器,会根据RawImage适配最终gif显示的尺寸 |
FilterMode | 纹理的过滤模式 |
WrapMode | 纹理的环绕模式 |
LoadOnStart | 是否在脚本Start时就加载gif |
LoadOnStartUrl | 脚本Start时加载的gif的url地址 |
ROtateOnLoading | 是否在加载时旋转图片 |
OutputDebgLog | 是否输出调试日志 |
3、测试
为了方便测试,制作一些简单的UI
。
写个测试脚本
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// gif显示测试
/// </summary>
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;
/// <summary>
/// 锁
/// </summary>
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
相关的技术难题,也欢迎留言或私信~