Unity 2D游戏:代码控制精灵图片切换做出帧动画效果

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[DisallowMultipleComponent]//只允许添加一次
[RequireComponent(typeof(SpriteRenderer))]//要求有精灵渲染器组件
public class SpriteAnimation : MonoBehaviour
{

    private SpriteRenderer mRender;  //动画精灵的渲染器
    public Sprite[] ActionArray;    //动作精灵图组

    public int NowFrameIndex = 0;  //当前播放帧的序号

    private float AnimTimer = 0; //动画的记时器 
    public float AnimSpeed = 6.0f; //1秒播放几帧图片
    private float AnimTimeInterval = 0; //每一帧的间隔

    void Awake()
    {
        mRender = GetComponent<SpriteRenderer>();//获取当前物体精灵渲染器组件
        AnimTimeInterval = 1 / AnimSpeed;//每秒时间间隔=1/每秒播放几帧图片

        if (ActionArray.Length > 0)//保护:如果精灵图组的长度大于0,即数组中包含个数大于0的元素
        {
            if (NowFrameIndex < 0)//如果当前播放帧的序号小于0
                NowFrameIndex = 0;//设置当前播放帧的序号等于0
            if (NowFrameIndex >= ActionArray.Length)//如果当前播放帧的序号大于等于图组长度
                NowFrameIndex = ActionArray.Length - 1;//设置当前播放帧的序号等于图组长度-1
            mRender.sprite = ActionArray[NowFrameIndex];//设置当前播放到的精灵(默认为0)
        }
    }

    void Update()
    {
        if (ActionArray.Length <= 0)//当动作精灵图组长度小于等于0,即无精灵元素
            return;//返回,无操作

        AnimTimer += Time.deltaTime;//开始计时
        if (AnimTimer >= AnimTimeInterval)//一个精灵播放的时间已到
        {
            AnimTimer -= AnimTimeInterval;//恢复

            NowFrameIndex++; //播帧

            NowFrameIndex %= ActionArray.Length;  //播放完一遍动画,返回从第1帧再次播放

            //if (NowFrameIndex >= ActionArray.Length)
            //    NowFrameIndex = 0;

            mRender.sprite = ActionArray[NowFrameIndex];//切换精灵
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值