Unity C# 音ゲーの作り方4 ノーツをスクリプトから生成して配置しよう

Unity C# 音ゲーの作り方


Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

Unity C# 音ゲーの作り方講座の第4回目、「ノーツをスクリプトから生成して配置しよう」をチュートリアル形式で説明していきます。

前回は「TextMeshProや画像を配置してゲーム結果を表示させよう」でゲーム画面の設計を行いました。

ここでは、第1回の講座で作成したmusicboxゲームオブジェクトをスクリプトから生成していきます。このことをインスタンスの生成と呼びます。

Unityでゲーム制作する際にゲームオブジェクトをスクリプトから生成したくなることはよくあります。スクリプト慣れも兼ねてここで実際にやってみましょう。


【Line登録者限定のプレゼントもあるよ!】

音ゲーのmusicboxオブジェクトのプレハブを作成する

オブジェクトのインスタンスを生成する前にプレハブにします。

プレハブとは、複数のオブジェクトを1つのアセットとしてまとめてくれる機能です。プレハブを一度作っておけばそのオブジェクトを何度でも再利用できます。

プレハブの作り方を説明していきます。

まず、『Assets』フォルダーの中に『Resources』フォルダーを作成してください。

ヒエラルキーの中にある『musicbox.pink』オブジェクトを選択して『Resources』フォルダーにドロップさせてください。

これで1つ目のプレハブ作成は完了です。

同様に残り4つの『musicbox』オブジェクトを『Resources』フォルダーにドロップさせてください。

以下のようになっていればプレハブの作成は完了です。

プレハブにしたmusicboxのインスタンスを生成させる

musicboxをプレハブにしたのでインスタンスを生成していきましょう。

インスタンスの生成を行うスクリプトを作成して配置したい場所をC#スクリプトで入力して作成していきます。

『Resources』フォルダーの中でスクリプトを作成して名前を『Resourcespink』に変更してください。

フォルダ内にResourcespink.csが作られます。

初めにサンプルスクリプトを以下に掲載します。

『Resourcespink』スクリプトの解説を行います。

以下のコードはUnityの中から『musicbox.pink』オブジェクトのプレハブを探すという内容です。

 

次のコードは、探したプレハブを元にインスタンスを生成するコードです。

 

Vecter3の横にある( )の中に配置したいXYZの順で数値を入力しています。

『musicbox』オブジェクトはZ方向に流れるためオブジェクトの色ごとにXYの数値は固定してZの数値のみ変更しています。

スクリプトの作成が完了したらヒエラルキーの中で右クリックして『空のオブジェクトを作成』を選択して名前を『Instancepink』に変更してください。

『Instancepink』は、musicboxオブジェクトの色を把握できるように色の名前をつけています。

『Instancepink』オブジェクトのインスペクターに先ほど作成した『Resourcespink』スクリプトをドロップさせてください。

『musicbox.pink』オブジェクトのインスタンス生成が出来ているか確認するためにゲームの実行ボタンを押してみましょう。

ゲーム画面の上にある実行ボタン▶︎を押してください。

以下のようにロードの奥の方で『musicbox.pink』オブジェクトが増えていたらインスタンスの生成は完了です(見えづらかったらScene画面も見てくださいたくさんのオブジェクトが生成されていることが確認できます)。

 

残りの4つの音ブロックのインスタンスを生成させていきましょう。

以下にスクリプト名と完成版コード、Instanceオブジェクトの名前を記載します。

スクリプトの名前   →   『Resourcesgreen』
Instanceオブジェクトの名前   →   『Instancegreen』

 

スクリプトの名前   →   『Resourcesblue』
Instanceオブジェクトの名前   →   『Instanceblue』

 

 

スクリプトの名前   →   『Resourcesorange』
Instanceオブジェクトの名前   →   『Instanceorange』

 

 

スクリプトの名前   →   『Resourcesbakudan』
Instanceオブジェクトの名前   →   『Instancebakudan』

 

5つの設定完了後、ゲームの再生ボタンを押してGameやScene画面が以下のようになっていればインスタンスの生成は完了です。

スクリプトで音を生成するorプレハブを直接画面に配置して設定する どっちのやり方がいい?

今回は作っておいたプレハブをスクリプトから読み込ませて生成する方法を学びました。

が、音ゲーを作るという点ではスクリプトの数値をいじるよりUnityエディタ上でノーツとなる音ブロックを動かしながら視覚的に配置・移動させて微調整する方が便利かもしれませんよね。

スクリプトで書いて変更していちいちUnityエディタで読み込ませてると時間もかかりますし・・・

いずれにせよまじめに音ゲーを仕上げていく場合は音の配置の微調整は必要になります。

外部のツールやデータを読み込ませて使いたい場合はスクリプトからノーツを生成する方がいいでしょうし、Unityだけで音ゲーを作る場合は視覚的に動かせるようにプレハブを一つ一つ手で置いていくほうがいいかもしれません。

そのあたりは自分の開発スタイルに合わせて最適な方法を選んで作っていけばよいでしょう。

音ゲーの作り方 第4回のまとめと次回

第4回目の開発お疲れさまでした。

今回は、オブジェクトのプレハブを作成してスクリプトから生成させる方法・スクリプトから生成するのが本当に良いのかどうかを解説しました。

インスタンスの生成はゲーム進行と共にスクリプトでゲームオブジェクトを生成したい時に利用されます。

この機能を用いて今回は音ゲーに必須となるノーツの生成・配置を実現しました。

しかし、音ゲーのようにオブジェクトの位置の微調整をスピーディーに行いたいならUnityエディタ上で直接配置をチューニングするのも良いでしょう。

次回は、第5回の「Unity C# 音ゲーの作り方5 musicboxをロードの上で流れるようにしてボタンの仕組みを作成しよう」です。

Unity C# 音ゲーの作り方5 音ノーツが自動で流れるようにする/ボタンの仕組みを作成しよう
今回はUnity C# 音ゲーの作り方講座の第5回目、「音ブロック・ノーツが自動で流れるようにする/ボタンの仕組みを作成しよう」をチュートリアル形式で説明していきます。 前回までで音ゲーのノーツを生成・配置することができました。 前回の...


Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

タイトルとURLをコピーしました