Programming/Unity
[Unity] 유니티 Animation 등록 - 애니메이션 자동 등록 스크립트
타임박스
2019. 8. 28. 11:03
반응형
✔ 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]);
}
}
}
반응형