关于unity5中应用Animator控制精灵动画的经验

在Unity5.4.0场景制作中,为模拟植物生长过程,将不同阶段的植物图片设定为Sprite。通过Animator控制Sprite动画,解决大量Sprite导致的内存占用问题。尝试了Resources.Load()和WWW加载方式,最终采用Animator结合Animation实现动态设置,通过建立Transition和调整Loop Time属性,实现了精灵的平滑切换。
摘要由CSDN通过智能技术生成

在unity5.4.0中,进行场景制作时需要模拟一些植物的生长过程等,导入植物各个阶段的图片设定为Sprite,利用精灵进行开发。基本方法是:在场景中的物体上添加Sprite Render组件,通过更换Sprite Render组件中的Sprite属性模拟植物的生长过程。

在这过程中,如果涉及到的植物只有一个或几个,且Sprite所占内存空间不多,可以使用如下方法用Resoures导入进行开发。

(1)把导入的Sprite图片放到Resoures文件中,利用协程模拟制作SPrite动画。

在脚本的Start()函数中,使用Resources.Load()导入Sprite,在脚本的Update()中,在需要的时机启动协程设置Sprite Render组件中的Sprite属性。

private Sprite[] spriteFlowers1 = new Sprite[145];
private Sprite[] spriteFlowers2 = new Sprite[145];
private Dictionary <string ,int> dic = new Dictionary<string ,int> ();
void Start () {
for (int i = 0; i < 145; i++) 
		{
			string str;
			str = "flower1/flower1_" + (i+1).ToString ();
			spriteFlowers1[i] = Resources.Load<Sprite> (str);
            Resources.UnloadAsset(spriteFlowers1[i]);
            str = "flower2/flower2_" + (i+1).ToString ();
			spriteFlowers2[i] = Resources.Load<Sprite> (str);
            Resources.UnloadAsset(spriteFlowers2[i]);
        }
}
public void EnableFlowersGrowing(GameObject obj)
	{
		if (!dic.ContainsKey (obj.name)) 
		{


			dic.Add (obj.name, obj.GetInstanceID ());
			StartCoroutine (ChangeSprite (obj));
		}
	}
IEnumerator ChangeSprite (GameObject obj)
	{
		string str = obj.name;
		Sprite[] newSprites = new Sprite[145];


		if(str.StartsWith("flower1"))
			newSprites = spriteFlowers1;
		else if(str.StartsWith("flower2"))
			newSprites = spriteFlowers2;


		if(newSprites.Length>0)
		{
			for (int index=0; index < newSprites.Length; index++) 
			{
				obj.GetComponent<SpriteRenderer> ().sprite = newSprites [index];
				yield return new WaitForSeconds (0.02f);
			}
		}
			
		//等待一定时间后返回到最小
		float timeToOriginal = Random.Range (10, 20);
		yield return new WaitForSeconds (timeToOriginal);
		if(newSprites.Length>0)
		{
			
			for (int index=newSprites.Length-1; index >=0; index--) 
			{
				obj.GetComponent<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值