您的位置:首页 > 移动开发 > Unity3D

Unity添加GIF动画

2014-07-20 16:06 316 查看
国外网站上看到的一篇帖子

http://wiki.unity3d.com/index.php/AnimatedGifDrawer

它使用“图像”和“图形”类的系统。图的命名空间,所以需要“system.Drawing.dll“要导入的文件/添加到项目中。

使用前准备:

1)复制”"System.Drawing.dll"
file in the "C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0"文件到"Assets" 文件夹下面。

2)创建一个新的脚本命名为“animatedgifdrawer”,与下面的内容。

3)将这个脚本场景中的任何对象。

4)更改脚本”loadinggifpath”字段,你的GIF文件的路径。(这可以从根项目文件夹是相对的也可以是绝对的。

下面给出C#代码:

using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using UnityEngine;

public class AnimatedGifDrawer : MonoBehaviour
{
public string loadingGifPath;
public float speed = 1;
public Vector2 drawPosition;

List<Texture2D> gifFrames = new List<Texture2D>();
void Awake()
{
var gifImage = Image.FromFile(loadingGifPath);
var dimension = new FrameDimension(gifImage.FrameDimensionsList[0]);
int frameCount = gifImage.GetFrameCount(dimension);
for (int i = 0; i < frameCount; i++)
{
gifImage.SelectActiveFrame(dimension, i);
var frame = new Bitmap(gifImage.Width, gifImage.Height);
System.Drawing.Graphics.FromImage(frame).DrawImage(gifImage, Point.Empty);
var frameTexture = new Texture2D(frame.Width, frame.Height);
for (int x = 0; x < frame.Width; x++)
for (int y = 0; y < frame.Height; y++)
{
System.Drawing.Color sourceColor = frame.GetPixel(x, y);
frameTexture.SetPixel(frame.Width - 1 - x, y, new Color32(sourceColor.R, sourceColor.G, sourceColor.B, sourceColor.A)); // for some reason, x is flipped
}
frameTexture.Apply();
gifFrames.Add(frameTexture);
}
}

void OnGUI()
{
GUI.DrawTexture(new Rect(drawPosition.x, drawPosition.y, gifFrames[0].width, gifFrames[0].height), gifFrames[(int)(Time.frameCount * speed) % gifFrames.Count]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: