본문 바로가기
Programming/Unity

[Unity] 유니티 Animation 등록 - 애니메이션 자동 등록 스크립트

by 타임박스 2019. 8. 28.
반응형


✔ Unity Animation 

유니티 애니메이션 컨트롤, 유니티 거꾸로 재생



 

매번 애니메이션을 생성하고 버튼에 등록하기 번거로워 제작..

 

[AnimationControl.cs]

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

public static class AnimationControl
{
    public delegate void AnimationButtonRegitEvent(Animation ani, Button button);
    public delegate void AnimationToggleRegitEvent(Animation ani, Toggle toggle);

    public static AnimationButtonRegitEvent ButtonRegit;
    public static AnimationToggleRegitEvent ToggleRegit;

    static AnimationControl()
    {
        ButtonRegit += AnimationButtonRegit;
        ToggleRegit += AnimationToggleRegit;
    }

    public static void AnimationButtonRegit(Animation ani, Button button)
    {
        button.onClick.AddListener(() => AnimationPlay(ani));
    }

    public static void AnimationToggleRegit(Animation ani, Toggle toggle)
    {
        toggle.onValueChanged.AddListener((value) =>
        {
            AnimationPlayAndBack(ani, value);
        });
    }

    public static void AnimationPlay(Animation ani)
    {
        ani.Play();
    }


    public static void AnimationPlayAndBack(Animation ani, bool isOn)
    {
    	// 애니메이션 정상 재생
        if (isOn)
        {
            ani[ani.clip.name].time = 0;
            ani[ani.clip.name].speed = 1;
            ani.Play();
        }
        // 애니메이션 거꾸로 재생
        else
        {
            ani[ani.clip.name].time = ani[ani.clip.name].length;
            ani[ani.clip.name].speed = -1;
            ani.Play();
        }
    }
}

============================================================================AnimationControl.cs 는 토글과 버튼에 이벤트를 등록하는 함수를 포함하고 있습니다.

버튼 => 애니메이션 플레이 등록

토글 => 애니메이션 플레이 , 거꾸로 플레이 등록

필요하시면 등록 수정해서 사용하시면 됩니다.

AnimationButtonRegit => 버튼에 클릭이벤트에 해당 애니메이션 재생을 등록함.

AnimationToggleRegit => 토글 버튼에 해당 애니메이션을 등록( true : 재생 , false : 거꾸로 재생 )

 

 

아래 간단 예제 파일 입니다. 스크립트를 붙여서 토글과 애니메이션을 드래그 해서 넣어주면 알아서 등록됨..

 

[AnimationEventHandle.cs]

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

public class AnimationEventHandle : MonoBehaviour {

    public Toggle [] toggles;
    public Animation[] animations;
    
    // Use this for initialization
    void Start () {

        for (int i = 0; i < toggles.Length; i++)
        {
            AnimationControl.ToggleRegit(animations[i], toggles[i]);
        }
    }
}

 

 

반응형

댓글