Unity3d 在Unity编辑器中使用脚本更改运动
您好,我们如何使用Unity Editor中的脚本更改AnimatorController中的运动 红色突出显示是我想更改的,但使用脚本Unity3d 在Unity编辑器中使用脚本更改运动,unity3d,animation,Unity3d,Animation,您好,我们如何使用Unity Editor中的脚本更改AnimatorController中的运动 红色突出显示是我想更改的,但使用脚本 我的用例是从一个对象复制动画,处理动画,例如添加偏移旋转,然后添加到另一个对象。因为我的对象有很多子对象,所以我需要创建一个脚本来自动执行 通过编辑器脚本更改动画控制器总是相当棘手的 首先,您需要从某处获得AnimationClip //从某处获取AnimationClip var clip=新的AnimationClip(); 然后,您将不得不强制
- 我的用例是从一个对象复制动画,处理动画,例如添加偏移旋转,然后添加到另一个对象。因为我的对象有很多子对象,所以我需要创建一个脚本来自动执行李>
动画控制器总是相当棘手的
- 首先,您需要从某处获得
AnimationClip
//从某处获取AnimationClip
var clip=新的AnimationClip();
- 然后,您将不得不强制转换为仅在编辑器中可用的!(使用UnityEdit;
将放在脚本顶部!)
var controller=(AnimatorController)animator.runtimeAnimatorController;
现在你可以得到它的所有信息了。在您的情况下,您可能可以使用默认层(layers[0]
)及其属性,并根据图像检索defaultState
:
var state=controller.layers[0].stateMachine.defaultState;
或者使用(将using System.Linq;
放在脚本顶部)查找它,例如
var state=controller.layers[0].stateMachine.states.FirstOrDefault(s=>s.state.name.Equals(“SwimmingAnim”)).state;
if(state==null)
{
LogError(“无法获取状态!”);
返回;
}
最后,使用将AnimationClip
指定到此状态
控制器。设置状态有效运动(状态,剪辑);
但是请注意,尽管您可以使用为动画片段编写单独的动画曲线,但不幸的是,无法正确地读取这些曲线,因此很难执行您想要的操作
从一个对象复制动画,处理动画,例如添加偏移旋转,然后添加到另一个对象
你将不得不经历一个相当复杂的过程;)
祝你好运 通过编辑器脚本更改AnimatorController
总是相当棘手的
- 首先,您需要从某处获得
AnimationClip
//从某处获取AnimationClip
var clip=新的AnimationClip();
- 然后,您将不得不强制转换为仅在编辑器中可用的!(使用UnityEdit;
将放在脚本顶部!)
var controller=(AnimatorController)animator.runtimeAnimatorController;
现在你可以得到它的所有信息了。在您的情况下,您可能可以使用默认层(layers[0]
)及其属性,并根据图像检索defaultState
:
var state=controller.layers[0].stateMachine.defaultState;
或者使用(将using System.Linq;
放在脚本顶部)查找它,例如
var state=controller.layers[0].stateMachine.states.FirstOrDefault(s=>s.state.name.Equals(“SwimmingAnim”)).state;
if(state==null)
{
LogError(“无法获取状态!”);
返回;
}
最后,使用将AnimationClip
指定到此状态
控制器。设置状态有效运动(状态,剪辑);
但是请注意,尽管您可以使用为动画片段编写单独的动画曲线,但不幸的是,无法正确地读取这些曲线,因此很难执行您想要的操作
从一个对象复制动画,处理动画,例如添加偏移旋转,然后添加到另一个对象
你将不得不经历一个相当复杂的过程;)
祝你好运 是的,这正是我要找的水!谢谢@derHugo。我得承认这真的很痛苦。我还通过AnimationUtility
从头开始创建AnimationClip
,并一个接一个地更改关键帧。是的,这正是我要寻找的内容!谢谢@derHugo。我得承认这真的很痛苦。我还通过AnimationUtility
从头开始创建AnimationClip
,并逐个更改关键帧。