2分で解決!Unityでオブジェクトを破壊できる「Destroy」メソッドの説明・使い方

Unityでオブジェクトを破壊する方法をお伝えする。

Destroyメソッドを使うことでオブジェクトを破壊できる。

Destroy(this.gameObject);

主に上のような記述をすることが多い。

では詳しく見ていく。

目次

Unityでオブジェクトを破壊するにはDestroyメソッドを使えば良い

Destroyメソッドを使うことで、オブジェクトを破壊できます。5秒後に破壊するという処理も行えます。

スクリプトをアタッチしたオブジェクト自身を破壊

Unityでオブジェクト自身を破壊

↑このようにスクリプトをアタッチしたオブジェクトを破壊する。

 

Cubeを設置

UnityでCubeを設置

【Hierarchy】→【Create】→【3D Object】→【Cube】

このCubeを消す。

 

Cubeにスクリプトを記述

Cubeにスクリプトを記述

【Cube選択】→【Inspector】→【Add Component】→
【DeleteObj.csを追加】

【DeleteObj.cs】スクリプトを追加する。他のスクリプト名でも構わない。スクリプトの作成・アタッチ方法がわからない場合はUnityでC#スクリプトを作成してアタッチする方法【基本知識】を見ていただきたい。

 

スクリプトを記述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DeleteObj : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Destroy(this.gameObject);
    }
}
Destroy(this.gameObject); オブジェクトを破壊

Startメソッドの内に書いているので、ゲーム開始時にオブジェクトが破壊されるようにしている。

このような記述でスクリプトをアタッチしているオブジェクトを破壊できる。

 

ゲームを実行

ゲームを実行すればCubeがゲーム開始時に破壊される。

 

数秒後にオブジェクトを破壊

Unityで数秒後にオブジェクトを破壊

↑このように数秒後にオブジェクトを破壊する。Destroyメソッドでは時間を指定して、オブジェクトを破壊できる。

 

スクリプトを記述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DeleteObj : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Destroy(this.gameObject, 3f);
    }
}
Destroy(this.gameObject, 時間); オブジェクトを時間後に破壊

オブジェクトを破壊させる時を指定することができる。

タップしたところにオブジェクトを飛ばすのようなオブジェクトが残ったままになってしまう場合に使える。使わないオブジェクトは破壊しないと、ゲームが重くなるので破壊していくべし。

あわせて読みたい
【Unity3D】タップしたところにオブジェクトを飛ばす【スクリプト例あり】 タップしたところにオブジェクトを飛ばしたい! というなやみを解決します。 この記事では2つのスクリプトを使って、タップしたところにオブジェクトを飛ばしていきま...

 

ゲームを実行

ゲームを実行すれば指定した時間に、オブジェクトが破壊される。

 

他のオブジェクトを破壊

Unityで他のオブジェクトを破壊

↑上のようにスクリプトをアタッチしていない他のオブジェクトを破壊する

 

現在の状況

Unityで他のオブジェクトを破壊する

【Create】→【3D Object】→【Sphere】→【Cubeと被らない位置にした】

Sphereを破壊していく。

 

スクリプトを記述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DeleteObj : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        GameObject obj = GameObject.Find("Sphere");
        Destroy(obj);
    }
}
GameObject.Find("オブジェクト名"); オブジェクト名を検索
Destroy(変数); 変数を破壊

これはCubeにアタッチしているスクリプト【DeleteObj.cs】に書いている。

GameObject obj = GameObject.Find("Sphere");

GameObject.Find("オブジェクト名");でSphereという名前がついたオブジェクトを検索している。その検索して見つかったSphereという名前のオブジェクトをobjという変数に格納している。

そしてDestroyメソッドを使って、Sphereを格納したobj変数を破壊している。

 

ゲームを実行

ゲームを実行すればSphereが破壊される。スクリプトをアタッチしているオブジェクト以外も簡単に破壊できる。

 

まとめ

  • Destroyメソッドでオブジェクトを破壊できる
  • スクリプトをアタッチしているオブジェクト自身を破壊可能
  • 破壊するまでの時間を指定してオブジェクトを破壊可能
  • スクリプトをアタッチしていないオブジェクトも破壊可能
Destroy(this.gameObject); オブジェクトを破壊
Destroy(this.gameObject, 時間); オブジェクトを時間後に破壊

以上、Unityでオブジェクトを破壊できる「Destroy」メソッドの説明・使い方だ。

Unityでゲームを作るならこちらのチュートリアルをやることをおすすめする。

あわせて読みたい
【Unity3Dサンプルゲーム・チュートリアル】「フリスビーを犬に届けよ!」の概要 【はじめに】 Unityでのゲーム開発を手助けするメディア「Unishar-ユニシャー」のさぎのみやです。「フリスビーを犬に届けよ!」というゲームのチュートリアルを作成し...

 

参考記事

あわせて読みたい
【Unity3D】タップしたところにオブジェクトを飛ばす【スクリプト例あり】 タップしたところにオブジェクトを飛ばしたい! というなやみを解決します。 この記事では2つのスクリプトを使って、タップしたところにオブジェクトを飛ばしていきま...

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次