unity3d序列帧动画两种方法

方法1

把序列帧切割成一张张小的sprite,然后在代码中定时修改sprite Renderer,或者创建一个动画,插入关键帧来替换image
这种方法适合用着序列帧不多的情况,因为如果太大会导致资源包里出现好多的下图资源(当然不是真的小资源)

方法2

创建一个材质Material,Shader选择Unlit/Transparent,然后图形选择序列图

Tiling代表了序列小图的大小,图的总大小是1x1,如果图里总共有16x10张序列图,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;
                }

        }
}

此条目发表在unity3d分类目录。将固定链接加入收藏夹。

发表评论