おれ、Unity2Dでゲーム作るんだ。

Unity2Dをメインに、覚書などを記事にしていきます。

Unity - 一定時間で消えるオブジェクトをつくる

f:id:xev:20150124023327p:plain

一定時間で消えるオブジェクト

たとえば、「Misson Complete!!」って表示した後、
一定時間たったら消したい場合ってどうするんだろうなと調べました。

オブジェクトを消す

オブジェクトを消すと言うよりは、
破棄するオブジェクトにスクリプトを乗っけておいて一定時間で自滅してもらう感じ。
 
以下、適当に書いたこんな感じのスクリプトを、
時限で消したいオブジェクトにのっける。

using UnityEngine;
using System.Collections;

public class TimeLimitObj : MonoBehaviour {

    public float life_time = 1.5f;
    float time = 0f;

    // Use this for initialization
    void Start () {
        time = 0;
    }

    // Update is called once per frame
    void Update () {
        time += Time.deltaTime;
        print (time);
        if(time>life_time){
            Destroy(gameObject);
        }
    }
}

publicでlife_timeを定義してあるので、
インスペクター側で希望の秒数をセットしてもいい。
 

deltaTimeを覚えた

deltaTimeってのは、updateから次のupdateまでの差分が入ってる。
なので、これを足していけば、こちらが指定した時間でDestroyがきちんと呼ばれる。
 
これで、どんなフレーム数でもオブジェクトは、ほぼ一定時間で消えるのでした。
なるほど。