Unityで一定時間経過後に処理を実行するスクリプトを書いています。何秒ごとに繰り返し処理をするコードは書けたのですが、何秒後に一回だけ処理を行うコードが書けません。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { float time; void Update() { time += Time.deltaTime; if(time > 3.0f) { Debug.Log("3秒経過"); time = 0; } } }
この書き方で書くと、3秒ごとにifの中身が実行されるようです。ただ今回は3秒後に一回だけ処理を実行させたいので次のように書き換えてみました。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { float time; void Update() { time += Time.deltaTime; if(time == 3.0f) { Debug.Log("3秒経過"); } } }
しかし、このようにifの条件を==で書くとうまく実行されません。一回だけ実行してほしいのでこの書き方で合っていると思ったのですが、なぜ実行されないのでしょうか?ifの条件を>=にしてもちゃんと実行されるようですが、なぜ==にするときだけ処理が実行されないのかどなたか教えていただけませんか。
回答2件
あなたの回答
tips
プレビュー