Unityでオブジェクトを破壊する方法をお伝えする。
Destroyメソッドを使うことでオブジェクトを破壊できる。
Destroy(this.gameObject);
主に上のような記述をすることが多い。
では詳しく見ていく。
Unityでオブジェクトを破壊するにはDestroyメソッドを使えば良い
Destroyメソッドを使うことで、オブジェクトを破壊できます。5秒後に破壊するという処理も行えます。
スクリプトをアタッチしたオブジェクト自身を破壊
↑このようにスクリプトをアタッチしたオブジェクトを破壊する。
Cubeを設置
【Hierarchy】→【Create】→【3D Object】→【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がゲーム開始時に破壊される。
数秒後にオブジェクトを破壊
↑このように数秒後にオブジェクトを破壊する。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, 時間); | オブジェクトを時間後に破壊 |
オブジェクトを破壊させる時を指定することができる。
タップしたところにオブジェクトを飛ばすのようなオブジェクトが残ったままになってしまう場合に使える。使わないオブジェクトは破壊しないと、ゲームが重くなるので破壊していくべし。
ゲームを実行
ゲームを実行すれば指定した時間に、オブジェクトが破壊される。
他のオブジェクトを破壊
↑上のようにスクリプトをアタッチしていない他のオブジェクトを破壊する
現在の状況
【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でゲームを作るならこちらのチュートリアルをやることをおすすめする。
コメント