unity animation readonly 无法加事件?

目前找到的解决方案是用代码加Event:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {

    public bool b = false;
    public bool b1 = true;

    
    public AnimationEvent mEvent;
    


	// Use this for initialization
	void Start () {

       Animation a =  this.GetComponent<Animation>();

       int count = a.GetClipCount();

        foreach (AnimationState state in a)
        {
            
            Debug.Log("AnimationState:" + state.name);
        }

        mEvent = new AnimationEvent();
        mEvent.functionName = "Skill_01";
        mEvent.time = 5.0f;//0.18f;

        a.clip.AddEvent(mEvent);

       
        a.Play();
        
        Debug.Log("clip:" + a.clip.name);


        Debug.Log("count:" + count.ToString());

		
	}

    public void Skill_01()
    {

        Debug.Log("Skill_01 Run!");

    }
	
	// Update is called once per frame
	void Update () {

        if(b && b1)
        {
            b1 = false;
            Animation a = this.GetComponent<Animation>();
            //a.CrossFade("eat", 4.0f);
            //a.CrossFade("eat"); //like play
            a.Play("eat");
        }

		
	}
}

  

  

 注意time不能超过动画的长度,否则会等这个时间

原文地址:https://www.cnblogs.com/jiahuafu/p/6829743.html