Unity2D

2D ゲームチュートリアル No.03(destroyを使うかSetActive (false)を使うか)

はじめに

前回に引き続きUnityのサイトに載っているチュートリアルについてポイントだけ残していこうと思います。

1.アイテムにプレイヤーが当たった時の処理

製作

1.アイテムにプレイヤーが当たった時の処理

void OnTriggerEnter2D(Collider2D other){
        if (other.gameObject.CompareTag ("PickUp")) {
            other.gameObject.SetActive (false);
        }
    }

アイテムのtagはPickUpとしています。
ぶつかった時の処理はアイテムを非アクティブにします。

destroyを使うかSetActive (false)を使うか

上記のコードでdestroyでもいいのではないかなと思う方がいると思うのでそれぞれの違いについて書きます。

SetActive(false)にしてオブジェクトを非表示にするメリットはScene上から検知できない状態になり、他のオブジェクトに影響を与えなくなることです。それに対してデメリットはSceneから検知できなくなるのでGameObject.Find()を使って取得できないということです。しかし検知できないだけで存在はするので前もってGameObject型の変数に格納しておけばアクセスできます!
Destroy()を使ってオブジェクトを消すと完全にSceneから消え、変数に格納していても削除されてしまいます。

終わり

今回で間違って説明している部分がありましたらご指摘ください。
ありがとうございました!