読者です 読者をやめる 読者になる 読者になる

渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きく慣れるように。。。 ※所属団体とは一切関係がありません

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


f:id:esakun:20150825162207p:plain

環境

  • Unity5.4.2f1
  • DOTween v1.1.310

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

gist.github.com

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

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

  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は止まりません

まとめ

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

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

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

あわせてDOTweenの記事をどうぞ

www.shibuya24.info

www.shibuya24.info

www.shibuya24.info