我在一個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節點上,則不會出現此問題。