unity 代码添加AnimationEvent

经过测试只要Animator跟继承monoBehaviour的类A在同一个节点上,就可以注册类A中的public 方法,含0或1个参数(int,float,object,string),注意:只能是0或1个参数



using UnityEngine;

class TAnimEvent:MonoBehaviour
{
	[SerializeField]
	private Animator mAnimator;

	public bool abc;

	void Start()
	{
		mAnimator = this.GetComponent<Animator>();
		RuntimeAnimatorController m_runtimeAnimatorController = this.GetComponent<Animator>().runtimeAnimatorController;
		AnimationEvent newEvent = new AnimationEvent();
		newEvent.functionName = "Print";
		newEvent.time = 0.0f;
		newEvent.intParameter = 9;
		//newEvent.floatParameter = 9.0f;


		AnimationClip[] clips = m_runtimeAnimatorController.animationClips;
		for (int i = 0; i < clips.Length; i++)
		{
			Debug.Log("Nafio -------!!");
			if (clips [i].name == "Fuck") {
				Debug.Log("Nafio find TAnim!!");
				m_runtimeAnimatorController.animationClips[i].AddEvent(newEvent);;
			}
		}
		mAnimator.Rebind();
	}
		
	void Print(int a)
	{
		Debug.Log ("Nafio---PrintEvent!!!  a:"+a);
	}


}



		AnimatorStateInfo currentState = animator.GetCurrentAnimatorStateInfo(0);
		if (currentState.nameHash == Animator.StringToHash("Base Layer.Idle"))
		{
			if (!hasSet) {
				Action act = new Action();
				act.Att = this.transform;
				act.Def = this.transform;
				
				AnimationEvent evt = new AnimationEvent();
				evt.time = 0;
				evt.functionName = "Test";
				evt.objectReferenceParameter = act as Object;
				
				AnimationInfo[] info = animator.GetCurrentAnimationClipState(0);

				foreach (AnimationInfo i in info) {
					i.clip.AddEvent(evt);
					hasSet = true;
				}
			}
		}


转载于:https://www.cnblogs.com/nafio/p/9137159.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值