我在一个fbx节点上添加了一个Animator,CullingMode设置为Cull Update Transforms(即如果没有激活的SkinnedRenderer就不更新骨骼动画),然后我将这个fbx的子节点中所有的SkinnedMeshRenderer都disable掉,然后为这个fbx节点添加一个子节点a,并在a上新建了个SkinnedMeshRenderer,然后播放动画,发现unity会认为此时“没有激活的SkinnedMeshRenderer”,此时查看各骨骼的Transform值都是静止不变的。
然后我在这个fbx节点的脚本上添加了下面几句:
AnimatorCullingMode oldAnimatorCullingMode = gameObject.GetComponent<Animator> ().cullingMode;
gameObject.GetComponent<Animator> ().cullingMode = AnimatorCullingMode.AlwaysAnimate;
gameObject.GetComponent<Animator> ().cullingMode = oldAnimatorCullingMode;
即先把animatorCullingMode设置成alwaysAnimate,然后再立刻设回来。
结果好了。
AnimatorCullingMode oldAnimatorCullingMode = gameObject.GetComponent<Animator> ().cullingMode;
gameObject.GetComponent<Animator> ().cullingMode = AnimatorCullingMode.AlwaysAnimate;
gameObject.GetComponent<Animator> ().cullingMode = oldAnimatorCullingMode;
即先把animatorCullingMode设置成alwaysAnimate,然后再立刻设回来。
结果好了。
注:如果新建的SkinnedMeshRenderer不是添加在fbx节点的子节点a上,而是直接添加到Animator所在的fbx节点上,则不会出现此问题。