【最終回】超入門!Unityで診断ゲームを作ろう!「Prefabの削除、SEの設定編」

最終回Prefabの削除・SEの設定編
ゆくすぃ

ごきげんよう、Budding Lab.編集部のゆくすぃです!
いつか、ホラーゲームも作ってみたいと思っています!

ゲームが大好きな皆さんなら、一度は「自分でゲームを作ってみたい!」と、思ったことがあるのではないでしょうか?

本連載では、ゲーム開発初心者のゆくすぃが、基礎的なスクリプトだけを使って、超入門・診断ゲームの作り方を解説します!

本記事は、最終回「Prefabの削除、SEの設定編」です。

プログラミングの専門知識がなくたって、画像や音楽作成アプリが使えなくたって、案外、ゲームって作れるものです。興味が湧いたなら、ぜひ挑戦してみてください!

目次

Prefabを削除するスクリプトの作成

Prefabを利用して診断結果を表示した後「初めからやり直す」ボタンをクリックしたタイミングで、診断結果(パネル:Result0~7)を削除する必要があります。でないと、診断結果が邪魔になって、設問(パネル:Question0)が見えないからです。

診断結果は、設問が乗っているパネルグループの上の階層(=カメラの最前面)に表示されている

設問と診断結果、カメラの位置関係

スクリプトを作成する

早速、Scriptsフォルダ内に「スクリプト:Destroy」を新規作成して、Prefabを削除するスクリプトを書いていきましょう。

スクリプト:Destroy

1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class Destroy : MonoBehaviour
6 {
7    public void InvokeDestroy() // Prefabの削除を1.0秒後に実行するメソッド
8    {
9        Invoke("DestroyPrefab", 1.0f); // DestroyPrefabを1.0秒後に実行する:処理
10   }
11
12   public void DestroyPrefab() // Prefabを削除するメソッド
13   {
14       Destroy(this.gameObject); // 自分自身を削除:処理
15   }
16 }

12行目に、Prefabを削除する「メソッド:DestroyPrefab()」を作ります。

14行目で、自分自身(this.gameObject)を削除する「処理:Destroy(this.gameObject);」を書きます。
関数:Destroyは、引数にGameObjectを渡すと、渡したGameObjectとそのコンポーネント、さらにそのGameObjectの子であるすべてのGameObjectを削除します。

7行目に「メソッド:InvokeDestroy()」を作ります。

9行目で「メソッド:DestroyPrefab()」の処理を「関数:Invoke」を使って1.0秒遅らせる「処理:Invoke(“DestroyPrefab”, 1.0f);」を書きます。

「初めからやり直す」ボタンをクリックした際にSEを鳴らす予定なので、SEを鳴らす処理が実行される時間を稼ぐために「関数:Invoke」を使っています。

「関数:Invoke」については以下記事を参考にしてください。

スクリプトをアタッチする

作成した「スクリプト:Destroy」は、Prefab(Result)にアタッチします。

ボタンにOnClickイベントを設定する

Prefab(Result)の「初めからやり直す」ボタンにOnClickイベントを設定します。

参照するオブジェクトに「ゲームオブジェクト:Result」をセットし、ドロップダウンリストから「Destroy.InvokeDestroy」を選択します。

ボタンにOnClickイベントを設定する

SEを鳴らすスクリプトの作成

スクリプトを作成する

Scriptsフォルダ内に「スクリプト:SEController」を新規作成して、SEを鳴らすスクリプトを書いていきましょう。

スクリプト:SEController

1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class SEController : MonoBehaviour // クラス:SEController
6 {
7     [SerializeField] private AudioClip _se00; // audioClip型の変数:_se00を定義
8     [SerializeField] private AudioClip _se01; // audioClip型の変数:_se01を定義
9
10    AudioSource audioSource; // AudioSource型の変数:audioSourceを定義
11
12    private void Start() // スクリプト:SEControllerが有効な時、最初に呼び出される
13    {
14        audioSource = GetComponent<AudioSource>(); // 変数:audioSourceにAudioSourceコンポーネントを代入
15    }
16
17    public void OnClick00() // メソッド:OnClick00()
18    {
19        audioSource.PlayOneShot(_se00); // 変数:_se00に代入されたSEを一度だけ鳴らす処理
20    }
21
22    public void OnClick01() // メソッド:OnClick01() 
23    {
24        audioSource.PlayOneShot(_se01); // 変数:_se01に代入されたSEを一度だけ鳴らす処理
25    }
26 }

7行目で、SerializeFieldを使ったaudioClip型の「変数:_se00」を定義します。こうすることで、inspectorウインドウの「変数:se00」に鳴らしたいオーディオファイルを設定できるようになります。

8行目で、SerializeFieldを使ったaudioClip型の「変数:_se01」を定義します。こうすることで、inspectorウインドウの「変数:se01」に鳴らしたいオーディオファイルを設定できるようになります。

10行目で、AudioSource型の「変数:audioSource」を定義します。

14行目で「変数:audioSource」にAudioSourceコンポーネントを読み込んでいます。こうすることで、スクリプトからSEを鳴らせるようになります。

17行目に「メソッド:OnClick00()」を作ります。

19行目で「変数:se00」に代入されたSEを一度だけ鳴らす「処理:audioSource.PlayOneShot(_se00);」を書きます。

22行目に「メソッド:OnClick01()」を作ります。

24行目で「変数:se01」に代入されたSEを一度だけ鳴らす「処理:audioSource.PlayOneShot(_se01);」を書きます。

AudioSourceコンポーネントをアタッチする

スクリプト:SEControllerをアタッチする前に、まず、Prefab(Result)に「AudioSourceコンポーネント」をアタッチしてください。

Prefab(Result)のInspectorウインドウにある「Add Component」をクリックし、表示された検索ウィンドウに「au」と入力すると「Audio Source」がリストに表示されるので、それを選んでクリックします。

チェックボックスのチェックはすべて外しておきます。

AudioSourceコンポーネントをアタッチ

スクリプトをアタッチする

「スクリプト:SEController」は「初めからやり直す」ボタン以外にも使い回したいので、Hierarchyウインドウに「空のゲームオブジェクト:SE」を作成し、アタッチします。

また、このオブジェクトにも「AudioSourceコンポーネント」をアタッチしておきます。

空のゲームオブジェクト:SEにスクリプトをアタッチする

「変数:se00」・「変数:se01」に、それぞれ鳴らしたいオーディオファイルをセットします。
※オーディオファイルは「第2回 ゲーム素材の準備編」でSoundsフォルダ内に保存してあります。

ボタンにOnClickイベントを設定する

Prefab(Result)の「初めからやり直す」ボタンにOnClickイベントを設定します。

参照するオブジェクトに「空のゲームオブジェクト:SE」をセットし、ドロップダウンリストから「SEController.Onclick00」を選択します。

ボタンにOnClickイベントを設定する
ゆくすぃ

同じ要領で、設問の「はい / いいえ」ボタンにも「スクリプト:SEController」をアタッチしてみましょう!

まとめ

今回の記事では、Prefabの削除、SEの設定について解説しました。
以上で、ゲーム自体は完成です!お疲れ様でした!

できあがったゲームをブラウザでプレイできるようにする手順(ビルド&リリース)については、以下記事を参考にしてください。

以上、最後まで読んでいただき有難うございました!

よかったらシェアしてね!
  • URLをコピーしました!
目次