unityはスクリプトを使ってアニメーションを動的に置換し、フレームイベントを追加します.
7163 ワード
unityはスクリプトを使ってアニメーションを動的に置換し、フレームイベントを追加します.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(SpriteRenderer))]
public class ReplaceAnimation : MonoBehaviour
{
private RuntimeAnimatorController run;
public Animator anima;
void Start()
{
// Animator
anima = GetComponent<Animator>();
}
public void Replace(AnimationClip clip) {
// !!
run = anima.runtimeAnimatorController;
var ride = new AnimatorOverrideController();
ride.runtimeAnimatorController = anima.runtimeAnimatorController;
// ,
ride["play"] = clip;
//
var _event = new AnimationEvent();
// ,
_event.functionName = "PlayEvent";
// , 1
_event.time = 1f;
//
ride["play"].AddEvent(_event);
//
anima.Rebind();
// , ,
anima.runtimeAnimatorController = null;
anima.runtimeAnimatorController = ride;
anima.Play("play", 0, 0);
}
public void PlayEvent() {
// ,
Destroy(gameObject);
// , , runtimeAnimatorController
anima.runtimeAnimatorController = run;
}
}
この方法は特効池の代替シーケンスフレームの特効の需要を解決したが、最適化の余地がある.