Unity目前对图形图像的支持还不是很完善,支持的图形文件格式有 PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT等,但却不支持Gif动画。Unity原生是不支持Gif动画播放的,但我们可以通过.net的Drawing库来实现图片解析,然后实现最后的播放。
先来做下准备工作,我们首先需要将一个名为System.Drawing的库导入到Unity,在我的电脑的路径下是 "C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0" ,为什么要导入这个插件,是因为需要获取到Gif动画的帧数,获取帧数在Image类下有相应的方法,而方法就在这个库里面。整个的播放原理就是使用.net的Drawing库,读取图片的每一帧并缓存为列表,然后遍历列表在Update当中刷出来。
获取图片的帧数,接下来按帧数将像素点绘制到图片上就OK了。那么上代码:
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using UnityEngine;
using System;
using System.Collections.Generic;
/// <summary>
/// Gif动画播放
/// 1.挂载此脚本到UGUI的Image上
/// 2.使用SetGifPath(string path)传入GIF图片路径
/// </summary>
public class GifManager : MonoBehaviour
{
//帧数(数值越大播放速度越快)
private const float Fps = 24;
private UnityEngine.UI.Image _image;