【Unityで超簡単】画面外のオブジェクトを消してみよう!




ゲームが作りたくてC#のプログラミング学習に励んでいるレオンです。

最近覚える事多すぎてパンクしそうなのでブログで発散!

 

今回、画面外に出たオブジェクトを瞬時に消したい!

といった方のためにメモがてらここに書き留めたいと思います。

たった3ステップで完了しますのでご安心を。

画面外のオブジェクトを消す手順

①スクリプトにOnBecameInvisible()を記述

以下のコードをスクリプトに記述してください。

OnVecameInvisible関数を使うことによって画面外に出たオブジェクトに対する処理が呼ばれます。

{}内にはアタッチさせたオブジェクトをDestroy関数によって破棄することができます。

ちなみにInvisibleは直訳すると「目に見えない」という意味。

 

実際にスクリプトに書くコードはこんだけ。簡単ですよね?

②スクリプトを削除させたいオブジェクトにアタッチ

次は、削除させたいスクリプトにアタッチさせることです。

消したいオブジェクト全てにアタッチさせていきましょう。

③オブジェクトにRendererコンポネートを取得させよう

OnVecameInvisible関数を使うには、
アタッチされたオブジェクトにRendererコンポネートを取得させなけらばなりません。

Rendere(レンダラー)とは、MeshRendererなど、ゲーム上にオブジェクトを描画するためのコンポーネントのことです。

まだ設定してない場合は以下のように取得させましょう。

①消したいオブジェクト選択→②AddComponent選択→③Meshを追加

これで正常に動くはずです。

 

お疲れさまでした。

もし画面外のオブジェクトが消えなかったら………

もし消えなかったらSceneビューが影響している可能性があります。

僕はこれに気づかず数時間格闘して死にかけました。

 

 

以下がGameビューとSceneビューが同時に開いている状態でのプレイ。

上のSceneビューで確かめてみると画面外から消えたはずのオブジェクトが消えてませんね。

 

なのでそんな時は、Gameビューだけを表示させてPlayしてみましょう。

 

GameシーンだけでのPlayが終わり、Sceneビューに戻って確認してみます。

↓↓
https://gyazo.com/988a8c40feb00f5e584383d7f42edd05

するとちゃんと画面外に出た後ろのオブジェクトが全部消えてますね!
(ぎり一台映ってる)

 

僕はこちらのブログを参考にさせていただきました。

 

 

 

無事画面外のオブジェクトは消えましたでしょうか。

 

少しでもお役に立てれれば嬉しいです。










コメントを残す

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