1.恰当地设置Animator组件的Culling Mode。Always Animate表示如果该动画不可见,也会播放它。Cull Update Transformations表示如果该动画不可见,则不会渲染该动画,但是依然会根据该动画的播放来改变游戏对象的位置、旋转、缩放,这样是常用的选项。Cull Completely表示完全不会播放该动画,不但不会渲染该动画,而且也不会改变游戏对象的位置、旋转、缩放。
2.禁用SkinMesh Renderer组件的Update When Offscreen可以让角色在不可见的时候动画不更新,这样可以减少计算量,提升性能。
3.对于Animator组件,可以使用Animator.StringToHash方法获得指定字符串的哈希值,再把它作为参数传入Animator型对象.GetXXX方法和Animator型对象.SetXXX方法中进行使用。
//获取动画组件
Animator animator = GetComponent<Animator>();
//正常情况播放动画的方法
animator.SetBool("animName", true);
animator.SetFloat("animName", 1);
//优化播放的方法
int hashValue = Animator.StringToHash("animName");
animator.SetBool(hashValue, true);
animator.SetFloat(hashValue, 1);
4.不用的Animation组件和Animator组件可以考虑删掉,因为只要它们存在,就会消耗性能来检测当前的状态和过渡条件。
5.一些简单的动画可以使用DoTween、iTween等插件实现,而不需要每个动画都用Animator来实现。