TomoGのごちゃまぜ倉庫

Unityで時間制御(実用)

今回は前回の時間制御の実用を書いていきたいと思います
前回のTime.realtimeSinceStartupを使用したやり方です。

前回↓
tomog.hatenablog.com

ソースコード

    private uint nowTime;//現在の時間(ms)
    private uint oldTime;//前回の実行時の時間(ms)
    private uint startTime;//計測開始時間(ms)

    //計測開始時に行う処理
    void setup()
    {
        startTime = (uint)(Time.realtimeSinceStartup * 1000);
        oldTime = startTime;
    }

    void Update()
    {
        uint Interval = 1000;//処理の間隔(ms)

        nowTime = (uint)(Time.realtimeSinceStartup * 1000) - startTime;
        if(nowTime - oldTime >= Interval)
        {
            //
            //処理
            //
      
            oldTime = nowTime;
        }
    }

■余談

sec → msecにするため、float型からuint型に変換している

・なぜuint型なのか
参考:Unityな日々(Unity Geek)

1日のmsec数は
1000(ミリ秒) * 60(秒) * 60(分) * 24(時) = 86,400,000(msec)
ushort型の最大値:65,535
uint型の最大値  :4,294,967,295
よって3日以上プレイしても値が振りきれないuintを採用

ちなみに、ushort型の場合
65,535 / 1000(ミリ秒) * 60(秒) =1.09・・・
なのでushort型の場合、1分ちょっとプレイしたらデータの最大範囲までいってしまう

・なぜmsecなのか
好みです・・・