float endTime = Time.time + duration; while(Time.time<endTime);というコードをよく見るので調べてみた.
もちろん私はこのようなコードは書かない.
public class Scene0 : MonoBehaviour
{
float prevTime_;
float startTime_;
string log_ = string.Empty;
void Start()
{
prevTime_ = startTime_ = Time.time;
}
void Update()
{
if(Time.time<=prevTime_){
float duration = prevTime_-startTime_;
string str = string.Format("duration: {0} ({1} -> {2}) -{3}",
duration, startTime_, prevTime_, System.DateTime.Now.ToShortTimeString());
Debug.Log(str);
log_ += string.Format("{0}\n", str);
System.IO.File.WriteAllText(Application.dataPath+"/../log.txt", log_);
startTime_ = Time.time;
}
prevTime_ = Time.time;
}
}
Run In BackgroundをOnにしてビルドして, 放置するといいだろう.だいたい9000 - 9600 seconds でリセットされるようです.
スリープ状態からの復帰など, 何かのタイミングでもリセットされるようです.
floatは, 4時間程度で 1 msecの精度を超えるので, リセットの周期はこの程度だと思います.
私は10000 seconds程度は起こりうる値だと思っています.
0 件のコメント:
コメントを投稿