当前位置: 代码迷 >> 综合 >> Unity通过代码控制动画范例脚本,从而实现对动画的全局控制
  详细解决方案

Unity通过代码控制动画范例脚本,从而实现对动画的全局控制

热度:34   发布时间:2023-10-13 15:31:17.0
using UnityEngine;
using System.Collections;public class AnimationManager : MonoBehaviour {/// <summary>/// 创建动画动画控制委托,后面创建播放动画方法,然后就调用就可以直接用委托的对象来调用/// 例:animationHandler = xxx, /// </summary>public delegate void AnimationHandler();/// <summary>/// 创建动画对象/// </summary>Animation animation;/// <summary>/// 创建动画控制器单例/// </summary>public static AnimationManager instance;/// <summary>/// 创建各个动画,外面赋值/// </summary>public AnimationClip Dead;public AnimationClip JumpDown;public AnimationClip JumpLoop;public AnimationClip JumpUp;public AnimationClip Roll;public AnimationClip Run;public AnimationClip TurnLeft;public AnimationClip TurnRight;/// <summary>/// 实例化委托/// </summary>public AnimationHandler animationHandler;// Use this for initializationvoid Start () {//初始化单例instance = this;//默认播放奔跑动画animationHandler = PlayRun;//拿到动画组件,挂载在本体上的animation = GetComponent<Animation>();}/// <summary>/// 播放各个动画/// </summary>#regionpublic void PlayDead(){animation.Play(Dead.name);}public void PlayJumpDown(){animation.Play(JumpDown.name);}public void PlayJumpLoop(){animation.Play(JumpLoop.name);}public void PlayJumpUp(){animation.Play(JumpUp.name);if (animation[JumpUp.name].normalizedTime > 0.95f){animationHandler = PlayRun;}}public void PlayRoll(){animation.Play(Roll.name);if (animation[Roll.name].normalizedTime > 0.95f){animationHandler = PlayRun;PlayerController.instance.isRoll = false;}else{PlayerController.instance.isRoll = true;}}public void PlayDoubleJump(){animation.Play(Roll.name);if (animation[Roll.name].normalizedTime > 0.95f){animationHandler = PlayJumpLoop;}}public void PlayRun(){animation.Play(Run.name);}public void PlayTurnLeft(){animation.Play(TurnLeft.name);if(animation[TurnLeft.name].normalizedTime > 0.95f){animationHandler = PlayRun;}}public void PlayTurnRight(){animation.Play(TurnRight.name);if (animation[TurnRight.name].normalizedTime > 0.95f){animationHandler = PlayRun;}}#endregion// Update is called once per framevoid Update () {if(animationHandler !=null){//在update里面实时判断委托播放动画animationHandler();}}
}

 

 

 

 

G

M

T

 

 

  Detect languageAfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu

 

AfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu

 

 

 

 

 

 

 

 

 

Text-to-speech function is limited to 200 characters

 

 

 

Options : History : Feedback : Donate Close