查看: 2485|回复: 4
打印 上一主题 下一主题

[其他] Unity的简单贴图动画的应用

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38268
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-9-30 22:49:35 |只看该作者 |倒序浏览
var frames : Texture[];   //声明一个数组,存放贴图,声明后,在inspector会看到一个frames的数组,数组的长度可以自己填,填1,就代表只有1张图,可以把一张texture拖进去,填2就代表2张,以此类推

var framesPerSecond = 10;  //声明fps,每秒播放几帧,影响动画的速度。

function Update() {
   var index : int = (Time.time * framesPerSecond) % frames.Length;    //数组的索引,根据时间改变,当前时间乘以fps与总帧数取余,就是播放的当前帧,随着update更新
   renderer.material.mainTexture = frames[index];    //渲染这个贴图
}

使用:将脚本新建保存,然后建一个cube或者平面,把脚本拖上,然后设置动画的贴图,然后play就可以测试了

由于Unity 不支持GIF动画贴图,所以目前在Unity里面做动态贴图,有两个办法。

一种是将图片导入成关键帧图片序列,类似(0,1,2...)然后在用脚本根据时间逐帧加载贴图.

另一种是将动画里面的关键帧画在一张大图上,然后用OFFSET来根据时间决定贴图的显示位置,从而实现图片改变的动画效果。

下面是一个简单的脚本,翻译自wiki :

//声明整个Texture的分布情况,4行4列,4个动画
var colCount    : int =  4;
var rowCount    : int =  4;
//声明想要播放的动画起始位置
//比如rowNumber = 0 colNumber = 0  代表红色第一个笑脸
// rowNumber = 3 colNumber = 0 代表黄色第一个笑脸
var rowNumber   : int =  0; //从0开始计算
var colNumber   : int =  0; //从0开始计算
var totalCells  : int =  4;
var fps  : int = 10;
var offset  : Vector2;
//更新动画,传递参数给SetSpriteAnimation()
function Update () { SetSpriteAnimation(colCount,rowCount,rowNumber,colNumber,totalCells,fps);  }
//设置动画SetSpriteAnimation(贴图总列数,总行数,指定动画起始帧所行号,列号,动画总帧数,帧率)
function SetSpriteAnimation(colCount : int,rowCount : int,rowNumber : int,colNumber : int,totalCells : int,fps : int){
    // 计算索引
    var index : int = Time.time * fps;
   
    index = index % totalCells;
   
    // 每个单元大小
    var size = Vector2 (1.0 / colCount, 1.0 / rowCount);
   
    // 分割成水平和垂直索引
    var uIndex = index % colCount;
    var vIndex = index / colCount;

   
    //颠倒V,让贴图正过来,所见即所得
    offset = Vector2 ((uIndex+colNumber) * size.x, (1.0 - size.y) - (vIndex+rowNumber) * size.y);
   
    renderer.material.SetTextureOffset ("_MainTex", offset);
    renderer.material.SetTextureScale  ("_MainTex", size);

}

例子里面的贴图,附件中有。使用这个脚本很简单,只要保存然后贴在一个cube上,然后就可以观看效果了。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-10-1 16:07:36 |只看该作者
Good article                           
回复

使用道具 举报

115

主题

3

听众

5676

积分

高级设计师

Rank: 6Rank: 6

纳金币
7268
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-10-1 17:03:56 |只看该作者
Thanks for sharing this one !
回复

使用道具 举报

0

主题

2

听众

1346

积分

助理设计师

Rank: 4

纳金币
505
精华
0
地板
发表于 2014-10-1 22:29:48 |只看该作者
谢谢详细的指导 给力顶一顶
回复

使用道具 举报

16

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
3
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2014-11-6 20:02:09 |只看该作者
详细而有用啊,多谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-16 09:16 , Processed in 0.115245 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部