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

一、前言

点关注不迷路,持续输出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
ImgAspectCtrlgif尺寸适配器,会根据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相关的技术难题,也欢迎留言或私信~

### 回答1: Unity3D是一款跨平台的游戏引擎,可以用于制作各种类型的游戏,并且有着广泛的使用范围。Unity3D也提供了许多插件来方便游戏制作者使用和开发。其中,一款支持移动设备、不需要System.Drawing的Unity3D GIF图片播放插件备受游戏开发者们的欢迎。 这款插件可以让游戏开发者使用GIF动画图片来实现游戏中的动画效果。通常来说,当游戏需要使用GIF图片时,开发者需要手动对图片进行分解,然后从内存中逐帧播放,而这个过程是非常繁琐的。而这款插件却可以很轻松地将一张GIF图片转换为纹理,在游戏中进行播放。 这款插件可以支持Unity平台上的所有设备,包括移动设备。同时,它还可以很好地处理GIF图片的透明度问题,让游戏中的动画效果更加逼真。使用这款插件,开发者们可以省去很多手动编写代码的麻烦,从而更加专注于游戏的创作和开发。 总之,这款支持移动设备、不需要System.Drawing的Unity3D GIF图片播放插件是一个非常实用的工具,可以大大提高游戏开发的效率和质量。如果你也是一名游戏开发者,那么这款插件绝对是值得一试的。 ### 回答2: Unity3D中有许多插件可以播放GIF图片,其中一些插件支持移动设备,并且不需要使用System.Drawing命名空间。这些插件通常是使用C#编写的,并且可以轻松地添加到Unity项目中。使用这些插件可以提高应用程序的交互性,并为用户提供更好的体验。 其中一个流行的Unity3D GIF图片播放器插件是uGif。该插件支持多种GIF格式,并可用于移动设备和PC平台。uGif还提供了多种自定义选项,例如控制GIF播放速度,循环次数和重复模式等。 另一个使用Unity3D的GIF播放器插件是Alembic GIF Player。它允许直接从文件夹中加载GIF,并提供多种自定义选项,例如播放速度,循环次数和自动播放。它还可以用于移动设备和PC平台。 综上所述,Unity3D可以使用多种插件播放GIF动画,并且可以在移动设备上使用,而不需要System.Drawing。这些插件提供了多种自定义选项,以控制GIF动画的播放行为和外观,从而提高应用程序的交互性和用户体验。 ### 回答3: Unity3D是一种十分流行的游戏开发引擎,可以在多个平台上实现游戏开发。而Unity3D GIF图片播放插件则是一种专门用于在Unity3D引擎上实现GIF图片播放的插件。相比传统的播放GIF动画的方法,使用此插件可以直接在移动设备上播放GIF动画,更加方便和快捷。 与传统的播放GIF动画方法不同的是,Unity3D GIF图片播放插件不需要使用System.Drawing来读取和载入GIF文件。相反,这个插件提供了一个更加高效的方法来读取并对图片进行处理,从而避免了一些常见的性能问题。同时,它也具有一些比较实用的功能,比如可以设置播放速度、循环次数、播放顺序等等。 总的来说,Unity3D GIF图片播放插件是一种非常有用的插件,可以大大简化在Unity3D中播放GIF动画的过程。如果你需要在移动设备上播放GIF动画,或者需要在你的游戏中集成一些动态效果,那么这个插件无疑是一个十分不错的选择。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林新发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值