Unity3d:加载Gif格式图片
unity里不支持Gif格式的图片,网上搜索也没有相关资料,殊不知我们已经太相信度娘了,而没有了自己的分析,我们知道Gif图是由多个静态图做成的,那我们就回归本土,第一步:把gif拆成n个静态图放在集合里
/// <summary>
/// 拆分GIF(使用.Net框架的Image对象)
/// </summary>
/// <returns>The GIF.</returns>
/// <param name="path">Path.</param>
public static System.Collections.Generic.List<Texture> SeparateGif(string path)
{
System.Collections.Generic.List<Texture> list=new List<Texture>();
try
{
// 获取图片对象
System.Drawing.Image imgGif = System.Drawing.Image.FromFile(path);
// 先判断图片是否是动画图片(gif)
if (System.Drawing.ImageAnimator.CanAnimate(imgGif))
{
System.Drawing.Imaging.FrameDimension imgFrmDim = new System.Drawing.Imaging.FrameDimension(imgGif.FrameDimensionsList[]);
// 获取帧数
int nFdCount = imgGif.GetFrameCount(imgFrmDim);
for (int i = ; i < nFdCount; i++)
{
// 把每一帧保存为jpg图片
imgGif.SelectActiveFrame(imgFrmDim, i);
Texture2D t2 = new Texture2D(imgGif.Width, imgGif.Height);
t2.LoadImage(ImageToByteArray(imgGif));
list.Add((Texture)t2);
}
}
}
catch (Exception ex)
{ }
return list;
}
第二步:把集合中的图绘制出来
private System.Collections.Generic.List<Texture> anim;
private int nowFram;
private int mFrameCount;
private float fps = 1.2f;
private float time = ;
void OnGUI()
{
DrawAnimation(anim, new Rect(float.Parse((Screen.width/-(int)EleWidth/+czdaGo.transform.localPosition.x).ToString()),float.Parse((Screen.height/-(int)EleHeight/-czdaGo.transform.localPosition.y-).ToString()), (int)EleWidth, (int)EleHeight));
}
/// <summary>
/// Draws the animation.
/// </summary>
/// <param name="tex">Tex.</param>
/// <param name="rect">Rect.</param>
void DrawAnimation(System.Collections.Generic.List<Texture> tex, Rect rect)
{
try {
GUI.DrawTexture(rect, tex[nowFram], ScaleMode.StretchToFill, true, );
time += Time.deltaTime;
if (time >= 1.0 / fps)
{
nowFram++;
time = ;
if (nowFram >= mFrameCount)
{
nowFram = ;
}
}
} catch (System.Exception ex) {
Debug.Log("CZDAElementGifInfo_DrawAnimation():"+ex.Message);
}
}
Unity3d:加载Gif格式图片的更多相关文章
- VC下加载多种格式图片的方法总结IPicture, CxImage, CImage(AtlImage), CPictureEx
尽管VC有提供相应的API和类来操作bmp位图.图标和(增强)元文件,但却不支持jpg.gif和png等格式的图片,而这几种格式却是常常要用到的.这里我给大家介绍两种办法来操作这些格式的图片. 1.用 ...
- 【Android Demo】加载.gif格式图片
Android系统为了节省内存,一般不支持直接显示gif图片,即使你强制设置了,也只会显示图片的第一帧. 这个 Demo 是在网上看到的,是个思路,还是有些局限性,还是记录下,以后研究吧. 1.效果图 ...
- 006--VS2013 C++ 加载其他格式图片,并显示半透明化
//--------------------------------------------MyPaint() 函数------------------------------------------ ...
- 如何在启用SharePoint浏览器功能的InfoPath 表单中添加托管代码以动态地加载并显示图片
InfoPath 的浏览器表单不支持加载并显示图片,当然在模板中可以插入图片,但是如果想显示数据库的一幅图片,或是动态加载一张图片就无能为力了. 基实这个问题可以通过在浏览器表单中使用: " ...
- Android开发技巧——TextView加载HTML的图片及代码显示问题
前几天在做一个Gradle用户指南的应用程序,使用的是TextView来加载HTML内容(至于为什么不用WebView,我也没有认真使用并比较过,也许以后会换吧),其中遇见了一些纠结的问题,所幸主要的 ...
- 转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式
Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关 ...
- 使用getJSON()方法异步加载JSON格式数据
使用getJSON()方法异步加载JSON格式数据 使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数组,并对获取的数据进行解析,显示在页面中,它的调用格式为: jQuery. ...
- iOS网络编程(三) 异步加载及缓存图片---->SDWebImage
@SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https:// ...
- hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)
数据做压缩和解压缩会增加CPU的开销,但可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,所以最好对那些I/O密集型的作业使用数据压缩,cpu密集型,使用压缩反而会降低性能. 而hive中间结果 ...
随机推荐
- 学习macos常用的一些快捷键笔记
学习mac 操作系统使用笔记 Dock功能学习 类似快捷图标一样 Command+q quit a program Dock上添加与删除都用拖动 command+delete 删除文件 shift+c ...
- AJax学习一
1.Ajax的准备工作,就是要先准备好服务器环境. 这边可以有好几种方式,例如服务器工具: http://www.php100.com/html/plugin/ser/2013/0905/91.htm ...
- Phonegap中用ajax读取PHP服务器的数据
直接上代码: HTML: var URL="网站地址&callback=?"; $.ajax({ type : 'GET', url : URL, dataType : ' ...
- WPF为提示信息文本增加闪烁效果
程序通常需要显示某些提醒用户警示的信息,如:收件箱(40)其中数量闪烁就会起到警示效果.可以适用如下Storyboard实现: <ItemsControl.ItemTemplate> &l ...
- 【WebApi】————.net WebApi开发(一)
2013年08月08日 ⁄ 综合 ⁄ 共 554字 ⁄ 字号 小 中 大 ⁄ 评论关闭 [1].部署环境.net4及以上版本. [2].vs2010 开发需单独安装vs2010 sp1和mvc4 m ...
- check windows return character
#ifndef _FILE_CHECK_H#define _FILE_CHECK_H#include <string.h>#include <vector> const int ...
- @Component @Repository @Service @Controller
Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring ...
- Zabbix监控Linux磁盘I/O
东西都上传到这里了: https://github.com/RexKang/Zabbix/tree/master/OS/Linux-disk-discovery 需要用到的东西: Zabbix的L ...
- HighChart 实现从后台取数据来实时更新柱状和折线组图
前段时间公司让弄图表,给我说有HighCharts这个js插件,于是上网上搜,由于本人是写后端的,对于JavaScript和jQuery不是很熟悉,虽然找到了模板,但是还是不明白,所以一点一点的改,但 ...
- .Net 学习
.Net 的微型Web框架Nancy ORM工具 Simple Data Ojbective-C 与 swift Xamarin for VisualStudio jQuery 1. 绝对的万金油,核 ...