質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

146閲覧

DOTweenの遅延機能の DOVirtual.DelayedCall で遅延させた関数が呼び出されるのをシーン遷移時に止めたい

Tora_ou

総合スコア7

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2025/05/15 23:34

編集2025/05/16 05:07

同じマテリアルを使いまわしている場合、
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の遅延処理だけを止めるにはどういった方法が有りますか。

マテリアルを別々に(シーンの数だけ)作って、それぞれのマテリアルを貼り付ければたぶん解決するのでは、とは思うのですがスクリプトのほうでなんとかする方法が無いかな?と思って質問しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

コルーチンの
yield return new WaitForSeconds(30.0f); // 30秒の待機
を使えば同様の遅延処理が出来つつ、かつシーン遷移で処理が止まってくれるようです。
DOTweenの遅延機能のDOVirtual.DelayedCallについては解決していませんが、とりあえず望み通りの動作になっているようですので自己解決とします。

投稿2025/05/16 05:20

Tora_ou

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問