Beispiel #1
0
    void CreateAnimationGraph()
    {
        AnimationClipConfig config = Player.GetComponent <AnimationClipConfig>();

        mAnimationGraphController = new AnimationGraphController("TestAnimation", Player.GetComponent <Animator>());

        Dictionary <string, Action <object> > dic = new Dictionary <string, Action <object> >
        {
            ["TestEvent"] = PlaySkillAudio
        };

        foreach (var clipItem in config.List)
        {
            if (clipItem.Type == AnimationType.Skill1)
            {
                mAnimationGraphController.AddState(clipItem.Name, clipItem.AnimationClip, dic);
            }
            else if (clipItem.Type == AnimationType.Skill2)
            {
                AnimationStateInfo stateInfo = mAnimationGraphController.AddState(clipItem.Name, clipItem.AnimationClip);
                stateInfo.AddEvent(0.1f, Skill2Handle, "qwerty");
                stateInfo.OnStopCallback = Skill2Stop;
            }
            else
            {
                mAnimationGraphController.AddState(clipItem.Name, clipItem.AnimationClip);
            }
        }

        mAnimationGraphController.Play(AnimationType.Idle.ToString());
    }
    public void OnPreprocessModel()
    {
        //当前正在导入的模型
        ModelImporter modelImporter = (ModelImporter)assetImporter;

        AnimationClipConfig.init();

        foreach (AnimationClipConfig.modelST item in AnimationClipConfig.modelList)
        {
            //当前导入模型的路径包含我们modelST动作数据表中的模型名字,那就要对这个模型的动画进行切割
            if (assetPath.Contains(item.ModelName))
            {
                modelImporter.animationType = ModelImporterAnimationType.Legacy;

                //modelImporter.splitAnimations = true;
                modelImporter.generateAnimations = ModelImporterGenerateAnimations.GenerateAnimations;

                ModelImporterClipAnimation[] animations = new ModelImporterClipAnimation[item.clipSTs.Length];
                for (int i = 0; i < item.clipSTs.Length; i++)
                {
                    animations[i] = SetClipAnimation(item.clipSTs[i].name, item.clipSTs[i].firstFrame, item.clipSTs[i].lastFrame, item.clipSTs[i].isloop);
                }

                modelImporter.clipAnimations = animations;
            }
        }
    }