タイマーを利用したワンショット処理



タイマーを利用したワンショット処理


<?php

using UnityEngine;
using System.Collections;

public class OneShotRoutine : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    float timer =0.0f;
    float prevTimer =0.0f;
    
    
    //Update()関数は1秒間に60回呼ばれる つまりprevTimerとtimerの間隔は 1/60 = 0.0166666~ 秒
    //これより時間の間隔が狭まることはunityの仕様上ない
    
    //prevTimerが1.96666        timerが1.98333    false
    //prevTimerが1.98333        timerが2.0        true
    //prevTimerが2.0            timerが2.01666    false
    //prevTimerが2.01666        timerが2.03333    false
    
    // Update is called once per frame
    void Update () {
        prevTimer = timer;
        timer += Time.deltaTime;
        
        const float trigTime = 2.0f;
        if(prevTimer < trigTime && timer >= trigTime){
            //片方が「>」ではなく「>=」になっている事が重要
            //この構造であれば通過する際に1度しか呼ばれない
            print("DoSomething");
        }
        
        //検証用
        if( 2.0f < 2.0f ){print ("2.0f < 2.0f_true");}        //これは真にならず表示されない事に注意!
        if( 2.0f >= 2.0f ){print ("2.0f >= 2.0f_true");}    //これは真になる
    }
}

?>

メニュー



  • 最終更新:2014-06-13 12:01:54

このWIKIを編集するにはパスワード入力が必要です

認証パスワード