Unity播放Gif动画
Unity目前对图形图像的支持还不是很完善,支持的图形文件格式有 PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT等,但却不支持Gif动画。但是经过查阅资料发现原来Unity可以支持Gif动画。
1,通过Image.FrameDimension方法可以获取此 Image 中帧的维数。
2,获取到图片的帧数,然后按帧播放就行了.
建个工程,测试下,首先要获取到Gif的动画的帧数,获取帧数在Image类下有相应的方法,这个需要导入系统的插件,复制”"System.Drawing.dll" file in the "C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0"文件到"Assets" 文件夹下面。获取图片的帧数,然后按帧数将像素点绘制到图片上就OK了。如何获取帧数呢?
/// <summary>
/// gif转换图片
/// </summary>
/// <param name="image"></param>
/// <returns></returns>
List<Texture2D> GifToTextureByCS(Image image)
{
List<Texture2D> texture2D = null;
if (null != image)
{
texture2D = new List<Texture2D>();
//Debug.LogError(image.FrameDimensionsList.Length);
//image.FrameDimensionsList.Length = 1;
//根据指定的唯一标识创建一个提供获取图形框架维度信息的实例;
FrameDimension frameDimension = new FrameDimension(image.FrameDimensionsList[]);
//获取指定维度的帧数;
int framCount = image.GetFrameCount(frameDimension);
for (int i = ; i < framCount; i++)
{
//选择由维度和索引指定的帧;
image.SelectActiveFrame(frameDimension, i);
var framBitmap = new Bitmap(image.Width, image.Height);
//从指定的Image 创建新的Graphics,并在指定的位置使用原始物理大小绘制指定的 Image;
//将当前激活帧的图形绘制到framBitmap上;
System.Drawing.Graphics.FromImage(framBitmap).DrawImage(image, Point.Empty);
var frameTexture2D = new Texture2D(framBitmap.Width, framBitmap.Height);
for (int x = ; x < framBitmap.Width; x++)
{
for (int y = ; y < framBitmap.Height; y++)
{
//获取当前帧图片像素的颜色信息;
System.Drawing.Color sourceColor = framBitmap.GetPixel(x, y);
//设置Texture2D上对应像素的颜色信息;
frameTexture2D.SetPixel(x, framBitmap.Height - - y, new Color32(sourceColor.R, sourceColor.G, sourceColor.B, sourceColor.A));
}
}
frameTexture2D.Apply();
texture2D.Add(frameTexture2D);
}
}
return texture2D;
}
将所有帧率保存到 List<Texture2D>中,按帧绘制就可以了!
最后的运行结果:

项目地址: git@git.oschina.net:wuzhang/GiftToTexture.git
Unity播放Gif动画的更多相关文章
- unity 播放过场动画
public var url="file:///c:/sample.ogg"; //文件路径 function Start () { //拼凑一个url url="fil ...
- HTML5骨骼动画Demo | 使用min2d、createjs、pixi播放spine动画
Spine做骨骼动画是比较流行的,使用起来可能相对复杂,但功能毕竟强大,所以市场占有率较大. 在unity.cocos2d.starling中使用spine已经很成熟了,而HTML5这一块可能刚刚起步 ...
- Unity MegaFiers 顶点动画
使用 MegaFiers 插件,能够使得Unity支持顶点动画的播放. 官方视频教程例如以下: 在这里简单測试使用下,环境例如以下: Blender 2.72 Unity 4.5.4 Mega ...
- 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器
对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪 ...
- 关于Unity中新版动画系统的使用
Mecanim动画 1:旧版动画系统只能通过代码来控制动画播放,随着动画种类变多,代码复杂度也会增加,同时动画过渡也需要非常繁琐的代码控制,为了让有经验的动画师开发动画,unity推出了针对人物角色的 ...
- Unity Shader序列帧动画学习笔记
Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 flo ...
- unity shader序列帧动画代码,顺便吐槽一下unity shader系统
一.看到UNITY论坛里有些人求unity shader序列帧动画,写shader我擅长啊,就顺势写了个CG的shader.代码很简单,就是变换UV采样序列帧贴图,美术配置行数列数以及变换速度. Sh ...
- unity 对Animator动画系统的研究
unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看 ...
- 使用代码给Unity中的动画片段绑定回调函数
在制作动作游戏的时候,需要播放许多动画,同时还有个需求,那就是动画播放到一定时间时,给一个回调函数,好做对应的状态变更, 我查了一下,发现如果使用的是unity自带的动画系统,要做到这样的话,需要这样 ...
随机推荐
- Angular - - ngClass、ngClassEven、ngClassOdd、ngStyle
这几个都关于样式及类名修改的,所以先把样式代码贴上吧. .red{color:red} .blue{color:blue} 写案例用到的样式就这么简单的两个,下面进入正题. ngClass ngCla ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (三)
本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二) 前几天有点事情所以没有继续更新,今天我们接着说.上个帖子中我们看到已经把Excel数据生成了.bin的文件,不过其 ...
- redhat6 + 11G RAC 双节点部署
一.配置网络环境 node1 [root@node1 ~]#vi/etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME= ...
- HMX-Server C++ 分步式服务器大版本更新了(有源码)
原文地址:http://www.cnblogs.com/hellohuang/p/6294763.html # HMX-ServerHMX-Server分步式服务器框架,主要分为网关.登录.世界.场景 ...
- 这个发现是否会是RSA算法的BUG、或者可能存在的破解方式?
笔者从事各种数据加解密算法相关的工作若干年,今天要说的是基于大数分解难题的RSA算法,可能有些啰嗦. 事情的起因是这样的,我最近针对一款芯片进行RSA CRT解密的性能优化.因为期望值是1024bit ...
- CodeForces 460B
Little Dima and Equation Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...
- 微信小程序维护登录态与获取用户信息
前言. 微信小程序的运行环境不是在浏览器下运行的.所以不能以cookie来维护登录态.下面我就来说说我根据官方给出的方法来写出的维护登录态的方法吧. 一.登录态维护 官方的文档地址:https://m ...
- Hadoop权威指南:数据完整性
Hadoop权威指南:数据完整性 [TOC] 常用的错误检测码是CRC-32(循环冗余校验) HDFS的数据完整性 HDFS会对写入的所有数据计算校验和,并在读取数据时验证校验和 datanode负责 ...
- 深圳尚学堂:Android APP的测试流程
每一个新开发的软件都避免不了测试,我在这里总结了一些Android系统的移动端APP测试的一些测试流程,希望可以给大家一些帮助. 1. UI 测试App主要核ui与实际设计的效果图是否一致:交互方面的 ...
- [html5] 学习笔记- 编辑API之Range对象(二)
本节继续介绍range对象的方法,包括cloneRange,cloneContents,extraContents,createContextual,createContextual-Fragment ...