一、序列帧动画
序列帧动画的原理是如此的简单,可以说只需要足够多张纸以及足够多的时间,就可以实现最简单的动画:

不使用 Animation 工具,只需要使用 Shader 中的内置时间变量,就可以实现最简单的序列帧动画了。就像最早的电影,依次展示一张又一张的图片,只要这些图片是连续的并且切换的足够快,那么当然就可以骗过人的眼睛,得到细腻的动画效果(现在我们的电脑电视本质上依然是这个原理,只不过是以帧的形式表现的)‘
序列帧的优点和缺点都很明显:
- 优点:无需任何计算,直接显示图片,逻辑简单,不用怎么考虑性能
- 缺点:制作非常耗时,需要给出 N 张图片,并且为了不占太多的空间往往单张图片分辨率都很低

这是《Unity3D入门精要》中的一张例图,64张帧动画图像被合并在一张大的图像中,它们的大小相同,都为128 x 128,这些单张的图像有时也被叫做精灵(Sprite)
这也是 Unity3D 图集的处理方案
二、Unity内置时间变量
对于上面的图片,在 Shader 中只需要按照从左上到右下的顺序,依次截取一个个128 x 128的子区域作为当前要显示的纹理,就可以实现最简单帧序列动画了
在此之前,我们需要在 UnityShader 中获取当前场景运行的时间需要知道以下变量:
- _Time:float4(t/20, t, 2t, 3t):其中 t 为自当前场景加载开始所经过的时间
- _SinTime:float4(t/8, t/4, t/2, t):其中 t 为自当前场景加载开始所经过的时间的正弦值
- _CosTime:float4(t/8, t/4, t/2, t):其中 t 为自当前场景加载开始所经过的时间的正弦值
- unity_DeltaTime

本文详细介绍了如何利用Unity内置时间变量实现序列帧动画,包括原理、优点与缺点,如简单爆炸效果和UV动画示例。还探讨了粒子特效在类似场景的应用,以及UV动画的滚动背景技术。
最低0.47元/天 解锁文章
4272






