先上效果





常规思路

用sprite作为animation clip的关键帧,LateUpdate里直接使用SpriteRenderer.sprite.name来查表替换sprite。

改进思路

UnityEngine.Object.name每次调用都会分配一个新的字符串,在update里调用,压力较大。

  • 每组图片,根据每张图片的名称hash,作为animation的一组key。
  • SpritePack保存hash数组,以及对应的图片数组。
  • PaperdollPart根据animation的key索引出图片,在LateUpdate里替换SpriteRenderer.sprite。

思考

Q. unity为什么用float作为animation clip的keyframe,而不是用int?

参考

Unity Animation2D package