DOTween의 Sequence에서 각 프로세스 사이에 대기 시간을 입력하는 방법

5765 단어 dotweenUnity

환경 확인


Unity:5.3.7p4
DOTween:1.1.575

질문: 시작할 때와 끝날 때 실행하는 함수의 실행 순서를 모릅니다


・OnStart
Tweener 또는 Sequence 시작 시 콜백.
・PreptendCalleback
Sequence 시작 시 콜백.
・PreptendInterval
Sequence가 시작될 때 대기 시간이 있는 함수입니다.
・On Commplete
Tweener 또는 Sequence 종료 시 콜백.
・AppendCallback
Sequence 종료 시 콜백.
・AppendInterval
Sequence가 끝날 때 대기 시간이 있는 함수입니다.
Sequence에 관한 기사는 참고가 되었다.
▲ [Unity] DOTween의 Sequence를 사용하여 애니메이션 결합
http://qiita.com/lycoris102/items/6a9e1e39bfa69880eaba

결론: 각 호출과 애니메이션 사이에 대기 시간을 포함하는 설명 순서


다양한 애니메이션 사이의 대기 시간을 시도한 결과 다음과 같다.
    [SerializeField]
    Transform m_playButton;
    [SerializeField]
    Transform m_questionButton;
    [SerializeField]
    Text m_text;

    // Use this for initialization
    void Start () {
        Sequence sequence = DOTween.Sequence()
            // OnStart の前には待機できない
            .OnStart(() =>
                {
                    m_playButton.gameObject.SetActive(true);
                    m_text.text = "OnStart";
                })

//          .PrependInterval(2f) // ここだと PrependCallback 後の待機になってしまう
            .PrependCallback(() =>
                {
                    m_questionButton.gameObject.SetActive(true);
                    m_text.text = "PrependCallback";
                })
            .PrependInterval(2f)    // PrependCallback 前の待機

            .AppendInterval(2f) // 各アニメーション間の待機
            .Append(m_text.DOText("各Append", 0f))
            .Append(m_questionButton.DOLocalMoveX(100f, 2f))
            .AppendInterval(2f) // 各アニメーション間の待機
            .Append(m_playButton.DOLocalMoveX(0f, 2f))
            .AppendInterval(2f) // 各アニメーション間の待機
            .Append(m_playButton.DOLocalMoveX(-100, 2f))
            .AppendInterval(2f) // 各アニメーション間の待機
            .Append(m_questionButton.DOLocalMoveX(0f, 2f))
            .AppendInterval(2f) // 各アニメーション間の待機

            .AppendCallback(() =>
                {
                    m_questionButton.gameObject.SetActive(false);
                    m_text.text = "AppendCallback";
                })
            .AppendInterval(2f) // AppendCallback 後の待機

            .OnComplete(() =>
                {
                    m_playButton.gameObject.SetActive(false);
                    m_text.text = "OnComplete";
                })
            // OnComplete の後には待機できない
            ;
        sequence.Play();
    }   

OnStart와 Preepend Calleback의 차이


OnStart
  • 여러 개를 써도 마지막이라고 한다.
  • 먼저 Sequence를 실행해야 합니다.
  • PrependCallback
  • 여러 개를 쓰면 전부라고 부른다.
  • 집행 순서는 설명 순서에 따라 바뀐다.(규칙성을 모르기 때문에 여러 개를 사용하지 않는 것이 좋다)
  •     void Start () {
            Sequence sequence = DOTween.Sequence();
            sequence.AppendCallback(() => { Debug.Log("AppendCallback1");});
            sequence.OnStart(() => { Debug.Log("OnStart");});
            sequence.AppendCallback(() => { Debug.Log("AppendCallback2");});
            sequence.AppendCallback(() => { Debug.Log("AppendCallback3");});
            sequence.OnComplete(() => { Debug.Log("OnComplete");});
            sequence.AppendCallback(() => { Debug.Log("AppendCallback4");});
            sequence.Play();
        }
    

    On Compulete와 AppendCallback에 대해서도 마찬가지입니다.

    Preptend Calleback 및 Append Calleback 실행 시간


    PreptendCallback 시작 시 AppendCallback 종료 시
    하지만 기술 순서를 바꾸면 실행 순서가 바뀐다.
        void Start () {
            Sequence sequence = DOTween.Sequence();
            sequence.OnStart(() => { Debug.Log("OnStart");});
            sequence.AppendCallback(() => { Debug.Log("AppendCallback");});
            sequence.PrependCallback(() => { Debug.Log("PrependCallback");});
            sequence.OnComplete(() => { Debug.Log("OnComplete");});
            sequence.Play();
    
            Sequence sequence2 = DOTween.Sequence();
            sequence2.OnStart(() => { Debug.Log("OnStart2");});
            sequence2.PrependCallback(() => { Debug.Log("PrependCallback2");}); // ここと
            sequence2.AppendCallback(() => { Debug.Log("AppendCallback2");}); // ここを入れ替えた
            sequence2.OnComplete(() => { Debug.Log("OnComplete2");});
            sequence2.Play();
        }
    

    처리 순서에 따라 정의하면 문제없다.

    PreptendInterval 및 AppendInterval 실행 시간


    기술 순서를 바꾸면 실행 시간이 바뀐다.
    다음과 같이 Preptend Interval을 Preptend Calleback 전후로 구성하면 각각 대기 시간이 발생합니다.
        void Start () {
            Sequence sequence = DOTween.Sequence()
                .PrependInterval(2f) // 最初に2秒
                .PrependCallback(() =>
                    {
                        m_playButton.gameObject.SetActive(true);
                    })
                .PrependInterval(2f) // ここでも2秒
                .AppendCallback(() =>
                    {
                        m_playButton.gameObject.SetActive(false);
                    });
    
            sequence.Play();
        }   
    
    AppendInterval과 AppendCallback 역시 기술 위치에 따라 실행 시간이 달라졌다.

    좋은 웹페이지 즐겨찾기