方法1
把序列帧切割成一张张小的sprite,然后在代码中定时修改sprite Renderer,或者创建一个动画,插入关键帧来替换image
这种方法适合用着序列帧不多的情况,因为如果太大会导致资源包里出现好多的下图资源(当然不是真的小资源)
方法2
创建一个材质Material,Shader选择Unlit/Transparent,然后图形选择序列图
Tiling代表了序列小图的大小,图的总大小是1×1,如果图里总共有16×10张序列图,Tiling x为1/16=0.0625 ; Tiling y为1/10=0.1
Offset代表了当前获取的区域的坐标,(0,0)为左下角,如下需要选择左上角的图需要填入的坐标为(0, 9*0.1) = (0, 0.9)
然后在创建一个对象,对象里使用这个材质
接下来就是用代码动态修改offset,实现动画效果
private float m_NormalFPS = 15;
private float m_NormalTicket = 0;
private int m_NormalCurIndex = 0;
void Update()
{
m_NormalTicket += Time.deltaTime;
if (m_NormalTicket > 1 / m_NormalFPS)
{
Vector2 offset = new Vector2((float)1 / 16 * m_NormalCurIndex, (float)1 / 16 * (int)m_AnimId);
this.GetComponent<MeshRenderer>().material.SetTextureOffset("_MainTex", offset);
m_NormalTicket %= (1 / m_NormalFPS);
m_NormalCurIndex++;
if (m_NormalCurIndex >= 15)
{
m_AnimId = ANIM.ACTION15;
m_NormalCurIndex = 0;
}
}
}