以前的项目里面用过一个序列帧特效的类,但是很麻烦,每一个特效都需要预先创建好perfab,才可以使用播放,而且不能动态创建
昨天自己写了一个方便一点的只需要把图片放到resources文件夹下面的AniEffect里面就可以了(可以改成自己的文件夹路径)
用法:静态方法SpriteAniTool.AddEffect(多个参数);既可以在场景中添加序列帧特效了
原理:根据名字(要与图片的名称相同),访问一个全局字典,如果这个特效已经加载过,则直接取出该特效的材质球赋予给创建的特效面片,如果这个特效从来没有用过,那么就去resources文件下下面找,至于序列帧的播放,和大家的方法基本一样,计算uv的tilling 和offect即可,offect保存在一个数组里面,播放序列帧的时候根据速度去数组里面取一个vector2的值,特效就播放了
注意事项:1.特效有两种,根据最后一个参数bool OnGround,如果为true,特效与地面平行,如果为false,特效则和摄像机平行
by the way :脚本加注释一共100行,特意的
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class SpriteAniTool{
public static Dictionary<string,Material> EffectLib = new Dictionary<string, Material>();
/// <summary>
/// 在场景中添加一个特效,按位置添加,参数代表:名字,持续时间,列,行,速度(帧),位置,是否在地面
/// </summary>
public static void AddEffect(string name, float time, int clomn, int