渋谷ほととぎす通信

「Unityをわかりやすく」初心者のためのゲーム作りブログ

DOTweenのコールバック関数の実行順

DOTweenのコールバック関数の実行順

こんにちは「DOTweenの教科書」執筆者のオオバです。

DOTweenには実行タイミングや状態に応じたコールバック関数をセットすることが出来ます。
今回検証に使うコードはこちら

様々なケースが存在するので、
一つ一つ実行順を確認していきます。

1.上記のソースを実行する

すると、以下のような出力結果になります。
OnStartから始まり、OnKillで終わるようです。フムフム。

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnStepComplete
  5. OnComplete
  6. OnKill

さて、ここから様々なパターンでTweenを再生させたり、停止したりしてみます。
それによって、どのコールバックがどのような順で呼ばれるのか見ていきます。

2-1.Tween途中でKill(false)する

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnKill

2-2.Tween途中でKill(true)する

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnComplete
  5. OnKill

3-1.Tween途中でComplete(false)する

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnComplete
  5. OnKill

3-2Tween途中でComplete(true)する

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnStepComplete
  5. OnComplete
  6. OnKill

4-1Tween途中でPause()する

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnPause

4-2.Tween途中でPause()後、Play()する

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnPause
  5. OnPlay
  6. OnUpdate...

4-3.Tween途中でPause後、Restart()する

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnRewind
  5. OnPause
  6. OnUpdate...

4-4.Tween途中でPause後、Restart()する

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnPause
  5. OnUpdate ※1度しか呼ばれません
  6. OnRewind
  7. OnPlay
  8. OnUpdate...

Pause後に1度だけOnUpdateが呼ばれる謎仕様。
そもそもなぜOnUpdateが呼ばれるのか。この辺はソースを辿っていこうと思います。今は過酷な現実を受け入れることにしましょう。

5-1.3回ループ設定してTween

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnStepComplete
  5. OnUpdate...
  6. OnStepComplete
  7. OnUpdate...
  8. OnStepComplete
  9. OnComplete
  10. OnKill

5-2.負の数でループ設定してTween

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnStepComplete
  5. OnUpdate...
  6. OnStepComplete
  7. OnUpdate...

5-3.負の数でループ設定したTween中にKill(true or false)

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnStepComplete
  5. OnUpdate...
  6. OnStepComplete
  7. OnUpdate...
  8. OnKill

5-4.負の数でループ設定したTween中にComplete()したら

  1. OnStart
  2. OnPlay
  3. OnUpdate...
  4. OnStepComplete
  5. OnUpdate...
  6. OnStepComplete
  7. OnUpdate...

※Tweenは止まりません

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

もくじ

まとめ

  • OnStart, OnComplete, OnKillはTween通して一度しか呼ばれる
  • OnUpdate, OnPlay, OnRewind, OnStepComplete, OnPauseは何度でも呼ばれる
  • Tweenが終了するときは必ずOnKillが呼ばれる
  • Tween開始は必ずOnStartが呼ばれる

まとめるとこんな感じでしょうか。

4.Tween途中でPause後、Restart()する 以外は、一度理解すれば覚えられそうな実行順でした。
これでコールバックの順番で迷うことは無いですね!!

オススメ記事
検証環境
  • Unity5.4.2f1
  • DOTween v1.1.310