同じマテリアルを使いまわしている場合、
UNITY、DOTweenの遅延機能の
DOVirtual.DelayedCallで遅延させて呼び出した関数の処理がシーンをまたいでも実行されてしまうのですが
例えば
void Start()
{
DOVirtual.DelayedCall(30.0f, () => {ColorChange();}); //30秒後に実行
{
private void ColorChange()
{
GetComponent<Renderer>().material.color = Color.red; //赤色に変える
}
30秒後に赤色に変わる ↑のような処理があったとして
シーン1が開始してから30秒経てば赤色に変わります、それについては特に問題が無く良い事なのですが
問題はまだ30秒も経ってない状態、例えば20秒が経過した時に次のシーン2に遷移した場合
次のシーン2になってから30秒ではなくて10秒で赤に変わってしまいます。
(シーン1の開始時から30秒、という事なのでしょう)
もちろんシーン2になってから30秒後にも再度赤に変わります。
本来ならばシーンが変わる度に30秒後に色が変わるようにしたくて
30秒経ってない状態で次のシーンへ遷移する場合には色を変えずに次のシーンへ、としたい所なのですが
シーンが変わってもシーン1から30秒、という処理は止まっていないようです。
シーンを遷移すると基本的にはデータや処理はシーンを跨げずにほぼ全て破棄される、と認識していた
(持ち越したいデータには特別な処理が必要)
のですがこれに関してはそうではなくて遅延処理が残っているのでこのような動きになっているようです。
シーン2へ遷移する際、30秒待機しているこのシーン1の遅延処理だけを止めるにはどういった方法が有りますか。
マテリアルを別々に(シーンの数だけ)作って、それぞれのマテリアルを貼り付ければたぶん解決するのでは、とは思うのですがスクリプトのほうでなんとかする方法が無いかな?と思って質問しています。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。