参考http://wiki.unity3d.com/index.php/AnimatedGifDrawer。

原理是:将gif图拆分成多个单个图片,用Texture2D存放,然后逐个替换Texture2D达到动态效果。

/** *FileName:     gifTest *Author:       #AUTHOR# *Description:
*/
using System.Drawing;
using System.Drawing.Imaging;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;public class GifPlay : MonoBehaviour
{public float speed = 1;private string loadingGifPath;private Vector2 drawPosition;private UnityEngine.UI.RawImage raw;private List<Texture2D> gifFrames = new List<Texture2D>();void Awake(){raw = GetComponent<UnityEngine.UI.RawImage>();loadingGifPath = Application.streamingAssetsPath + "/gif.gif";drawPosition = transform.position;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);}}public IEnumerator PlayGif() {for (int i = 0; i < gifFrames.Count; i++){raw.texture = gifFrames[i];yield return 0;}}private void Update(){if (Input.GetKeyDown(KeyCode.P)){//播放一次StartCoroutine(PlayGif());}//循环播放gifFrames[(int)(Time.frameCount * speed) % gifFrames.Count]);}//void OnGUI()//{//    //GUI.DrawTexture(new Rect(drawPosition.x, drawPosition.y, gifFrames[0].width, gifFrames[0].height), gifFrames[(int)(Time.frameCount * speed) % gifFrames.Count]);//}
}

Unity简单操作:Unity 里使用Gif图片相关推荐

  1. Unity简单操作:InputSystem获取WASD键盘输入 移动人物

    目录 安装InputSystem 在编辑的脚本中使用 InputSystem生成的脚本 Unity版本:2019.2.3f1 安装InputSystem 菜单栏/Window/Package Mana ...

  2. Unity简单操作: 监听粒子系统播放完毕——OnParticleSystemStopped函数

    OnParticleSystemStopped OnParticleSystemStopped是MonoBehaviour中有监听当前物体所挂在粒子系统停止时调用的函数.官方API点这里查看. 使用方 ...

  3. Unity简单操作:HDR(一) 给Camera开启HDR

  4. Unity简单操作:设置触发条件 切换Animator动画控制器 里面播放的Animation动画

    确保animator里面有多个animation动画剪辑,点击Animator里面[Parameters]添加触发条件 添加连线箭头并且 给箭头连线绑定触发事件 添加连线箭头并且 给箭头连线绑定触发事 ...

  5. Unity 简单手势识别

    Unity 简单手势识别 Unity 代码 代码很简单没有难度,都有注解,随便 康一康 就会了. CallEvent () 方法需要自己搭载使用. Unity 代码 using System.Coll ...

  6. AE基础教程第一阶段——20层的简单操作

    层的简单操作 导入几张素材图片--将第一张新建合成--将剩余的几张添加到合成中 层的剪切 选中第一张图片--在右侧时间线上从最左侧往右拖(可以看到时间线变短了)--时间线从最右侧往左拖 将上面的这个时 ...

  7. AE基础教程(20)——第20章 层的简单操作

    层的简单操作 导入几张素材图片--将第一张新建合成--将剩余的几张添加到合成中

  8. Unity简单实现图片墙功能

    Unity简单实现图片墙功能 前言 在做之前公司的项目中,我做过很多实现照片墙效果的功能.其中我觉得我做的效果比较好而且比较有难度的就是雀巢项目中的那个仿照apple watch拖拽效果实现的那个照片 ...

  9. Unity简单2D游戏开发

    Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏--开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Sto ...

最新文章

  1. 你玩《2048》能拿多少分?AI的最高分纪录:401912
  2. keyvaluepair_C# KeyValuePairTKey,TValue的用法【转】 .
  3. 【鸿蒙 HarmonyOS】界面跳转 ( Page Ability 的 action 标识 | Page Ability 之间的界面跳转及传递数据 | 鸿蒙工程下创建 Module | 代码示例 )
  4. C++中结构体、联合体、枚举的区别
  5. Python 爬虫性能相关总结
  6. 学生信息管理---C#文件写入及读取
  7. wav文件头修复_windows文件夹分析(xp版,网络整理)
  8. 2.java运算符与逻辑控制
  9. 用js内置对象XMLHttpRequest 来用ajax
  10. perl DBI高级编程
  11. python 等号 什么编码_Python运算符与编码
  12. 文件的创建、删除、移动和查找
  13. 集成随机惯性权重和差分变异操作的樽海鞘群算法
  14. 电脑硬件检测软件排名列前茅:试试整合了当下最好的硬件检测软件的图吧工具箱吧 | 图吧工具箱在哪里下载
  15. 中端存储和高端存储的区别
  16. 洛谷 【入门4】数组 P1427 小鱼的数字游戏
  17. kali linux安装微信,kali liunx2020.2最简单的安装微信,QQ等windows软件,同样适合,Debian Ubuntu...
  18. MARKDOWN--介绍http://www.jianshu.com/p/q81RER
  19. 面试官:设计模式是什么?
  20. Vue + MathLive 实现数学公式可编辑

热门文章

  1. Iframe嵌套拒绝接入
  2. 到底什么睡姿最好?医生:平躺是脊柱最喜欢的睡姿
  3. 无人机地面站定制开发流程分享
  4. 百度BROAD-Video Highlights视频精彩片段数据集简要介绍与分析
  5. 关于Math —— 攻克费马大定理的那个人
  6. 最新仿悬赏猫任务平台完整系统源码下载+可封装APP
  7. C++基础之static关键字(1)--静态局部变量详解
  8. C语言程序设计——结构体的运用 完成对输入的字符串中C关键词的查找统计。程序运行示例如下:本程序将为您统计C语言的关键字的个数,请输入,输入end结束输入:
  9. c语言学习,手写笔记
  10. 知识付费海哥:知识不能改变命运,知识变现才能改变命运