
情况是这次程序那边使用了Screen Space - Overlay的Canvas Render Mode,所有的Assets(包括game objects)都在Canvas上。
理论上Canvas一般是摆放UI素材的,所以一直做sprite animation的我有点懵圈——因为Canvas只能渲染Image,和Sprite Renderer不兼容。殊不知在论坛里发现了一个很邪门的办法:用Sprite.Image做动画(↓原链接↓)
https://forum.unity.com/threads/animating-sprites-in-a-canvas.281426/forum.unity.com
步骤大概是这样的:
- 删掉Sprite Renderer以及原来的Animation Controller。
- 加入Image和Canvas的Component,随便放一张角色的图片,Image是使图片可以在Canvas上显示,Canvas是用来调整顺序的。
- 打开Animation编辑器(这时候原来的animation clips已经没有了),再按照Sprite Animation的流程把所有的动画加上。搞定w
P.S.原帖说需要把Image中的Preserve Aspect给uncheck掉,不然每个动画可能会有大小不一的问题(因为Rect Transform的尺寸是不变的),但我觉得如果是Q版角色,动作幅度没有那么大的话,木有太大的必要,It Depends。