▼そのUnityの作業、依頼しませんか?
ゲーム開発に使える素材・知識

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サンプルゲーム】うちのポチが危ないところでフリスビーを要求する理由を教えてくれの本記事
【Unity3Dサンプルゲーム・チュートリアル】「フリスビーを犬に届けよ!」の概要【Unityチュートリアル・サンプルゲーム】Unityで3Dゲームを作りたいと考えている人、本やネットにあるUnityのチュートリアルをやってみたけど、いまいちゲームらしくないと思っている人、テキストでも動画でも学びたい人におすすめのチュートリアルです。...

 

参考記事

タップでオブジェクトを飛ばす
【Unity3D】タップしたところにオブジェクトを飛ばす【スクリプト例あり】タップしたところにオブジェクトを飛ばしたい! というなやみを解決します。 この記事では2つのスクリプトを使って、タップしたところにオブジェクトを飛ばしていきます。一回タップしてオブジェクトを飛ばすのはもちろんのこと、複数回タップしてもオブジェクトを飛ばします。...
ABOUT ME
さぎのみや
さぎのみや
超書手。現在はUnityメディア「ユニシャー」の運営とゲーム開発がメインです。Unity、ライティング関係のお仕事お待ちしております。 >>詳しいプロフィール >>Amazonほしいものリスト
【Unity3D】新しいサンプルゲーム(チュートリアル)を作りました!!!
Unity有料サンプルゲーム

「Unityで3Dゲームを本格的に作っていきたい!」という人におすすめのチュートリアルとなっています。

画像のようなゲームの作り方を販売しています。色々と応用できるサンプルゲームとなっています。ぜひ、作ってみてください。

詳細
>>【Unity3Dサンプルゲーム・チュートリアル】「フリスビーを犬に届けよ!」の概要

>>BOOTHでこのチュートリアルを見る

【RT・フォローであなたのスキルが上がる】

シェアフォローする

さぎのみやのモチベが上がる

コンテンツの質が上がる

あなたの能力も上がる

あなたの
Twitterでのシェア

であなたの能力が上がります。

>>さぎのみやのツイッター(@saginomiya8)

 

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


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