DOTween의 Sequence에서 각 프로세스 사이에 대기 시간을 입력하는 방법
환경 확인
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
・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
[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
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 역시 기술 위치에 따라 실행 시간이 달라졌다.
Reference
이 문제에 관하여(DOTween의 Sequence에서 각 프로세스 사이에 대기 시간을 입력하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/310ma3/items/58aba53375baab5dcf67
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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();
}
기술 순서를 바꾸면 실행 시간이 바뀐다.
다음과 같이 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 역시 기술 위치에 따라 실행 시간이 달라졌다.
Reference
이 문제에 관하여(DOTween의 Sequence에서 각 프로세스 사이에 대기 시간을 입력하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/310ma3/items/58aba53375baab5dcf67텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)