【Unity】SceneをloadしたときにDOTweenがうまく動かないときにやったこと

投稿日:2020年6月19日
最終更新日:2020年6月19日

Sceneを変更した時にDOTweenが動かない?

初めてDOTweenを使ったときに少し困ったので備忘録としてメモしておく。以下の動画のゲームでDOTweenを使って空中で一回転する動作を付けたのだが、この動作で問題が起こった。

コードとしては、画面がクリックされたときにDOTweenが呼び出すようにしている。

transform.DOLocalRotate(new Vector3(0, 0, 360f), 1f, RotateMode.FastBeyond360)
.SetEase(Ease.Linear)
.SetLink(gameObject)

ゲームをスタートした時には特に問題ないのだが、Retryしてシーンを再ロードした後だと、なぜか一回転する動作が動かない。上のコードに以下を追加して、シーン切り替え前にDOTweenが正常にCompleteしていることはlogで確認したが、やはりシーンを切り替えると動かない。

.OnComplete(() => Debug.Log(“completed”));

ちなみにシーンは以下のScriptで呼び出している。

SceneManager.LoadScene(SceneManager.GetActiveScene().name);

 

シーン切り替え前にDOTween.Clearで解決

結論から書くと、シーン切り変え前に以下のコードを追加することで解決した。

DOTween.Clear(true);

こちらのページで似たような症状について書いてあり、対策として紹介されていたのでやってみたら解決したという流れ。

もしかしてこれって、DOTweenを使うときのお作法だったりするのだろうか? 何はともあれ、解決したので良かった。

 

ちなみに作ったゲームはこちら

ついでなので、DOTweenを使いつつ作ったゲームも紹介しておく。

itch.ioのゲームジャムに初めて参加して出品した作品「Fly High, Surfing Duck!」。なるべく高い波を捕まえてジャンプするとクルっと回って高得点がもらえる爽快な(?)カジュアルゲーム。以下のページから遊べるので、お時間があればぜひ。

https://wakkyfree.itch.io/fly-high-surfing-duck

1+

投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください