2022년 10월 19일 수요일

Unity animation use Slider UI

 


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

public class AnimationTruck : MonoBehaviour
{
    public Animation ani;
    public string clip_name;
    public float ani_time;

    [Header("Animation Slider")]
    [SerializeField] Slider AnimationSlider;
    [SerializeField] float speed;

    private void Start()
    {
        Hide();
        if (AnimationSlider != null)
        {
            AnimationSlider.maxValue = ani[clip_name].length;

           

            AnimationSlider.onValueChanged.AddListener(delegate
            { OnChangeAnimationBySlider(AnimationSlider);
            });

        }
    }



    void OnChangeAnimationBySlider(Slider slider)
    {
        if (!ani.isPlaying)
        {
            ani.Play();
            ani[clip_name].speed = 0;
        }

        //ani[clip_name].speed = speed;
        ani[clip_name].time = slider.value;

    }


    public void ToggleAnimation(Toggle m_toggle)
    {
        if (m_toggle.isOn)
        {
            Show();
        }
        else
        {
            Hide();
        }
    }

    private void Update()
    {
        if (AnimationSlider == null)
                return;
        
            if (AnimationSlider.value != ani[clip_name].time)
            {
                AnimationSlider.value =  ani[clip_name].time;
            }
    }

    public void Hide()
    {
        //if (ani_time == ani[clip_name].length)
        //    return;

        ani_time = ani[clip_name].time;

        func_playAni(ani_time, clip_name);

    }
    public void Show()
    {

        if (ani_time == 0)
            ani_time = ani[clip_name].length;
        else
            ani_time = ani[clip_name].time;


        func_reversPlay(ani_time, clip_name);

    }


    public void func_playAni(float time, string aniName)
    {

        ani[aniName].time = time;
        ani[aniName].speed = speed;
        ani.Play();

    }

    public void func_reversPlay(float time, string aniName)
    {
        ani[aniName].time = time;
        ani[aniName].speed = -speed;
        ani.Play();
    }
}





댓글 없음:

댓글 쓰기

git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...