Unityでメインメニューを作成する方法

このInstructableでは、無料でダウンロードできる3DゲームデザインソフトウェアであるUnityでゲームのスタートメニューを作成する方法を説明します。 これはシンプルなメニューですが、概念はより複雑なメインメニューにも簡単に適用できます。

メニューが含まれています:

ゲームタイトル、スタートボタン、カスタマイズされたフォントのボタンを終了します。

カーソルを合わせると、開始ボタンと終了ボタンの色が変わります。

カスタマイズされた背景。

ステップ1:平面を作成し、カメラの前に配置する

Unityを開き、シーンをMainMenuとして保存します。

[階層]パネルの[作成-平面]をクリックします。 名前を「Background」に変更します。

メインカメラを90度下に回転し、投影をパースから正射投影に変更します。

カメラの変換を調整して、メニューから8〜10ユニット上になるように、まっすぐ見下ろします。

カメラのプレビューに正確に合うように、平面の背景を拡大縮小します。

完了すると、上の画像のようになります。

ステップ2:ライトアップ

ライトを追加します。 これを行うには、[階層]パネルで[作成]を選択し、[指向性ライト]をクリックします。

指向性ライトが3D空間のどこにあるかは問題ではありません。 何があっても同じ照明を提供します。

したがって、ライトの方向を調整して背景を照らした後、ライトをY方向に20ユニットほど上げて、シーンビューで視野がはっきり見えるようにします。

(0、20、0)位置と(60, 0、-20)回転の変換を持つようにライトを調整しました。

また、強度を0.4に変更しました。

もう一度、ステップを完了したときのイメージを見てください。

ステップ3:テクスチャを追加する

現在、私たちの背景はかなり単純に見えますが、十分に簡単にスパイスアップできます。 デジタルカメラ/スマートフォンを取り、床、天井、壁など、便利で面白いものの写真を撮って、コンピューターにアップロードします。

作業中のUnityプロジェクトのAssetsフォルダーにTexturesという名前の新しいフォルダーを作成します。 Unityのプロジェクトパネルでフォルダーを右クリックし、「エクスプローラーで表示」を選択します。 撮影した画像をコピーして、Texturesフォルダーに貼り付けます。

階層で背景を選択した状態で、プロジェクトをクリックし、[プロジェクト]パネルの[テクスチャ]フォルダーから[インスペクター]パネルに画像をドラッグして、背景の新しいテクスチャとして追加します。 画像をご覧ください。

ステップ4:テキストを追加する

Unityウィンドウの上部にあるGame Objectドロップダウンツールバーを使用して、空のゲームオブジェクトを作成します。 名前を「テキスト」に変更します。 変換をリセットします。

[階層]パネルで[作成-3Dテキスト]をクリックします。 変換をリセットします。

3D Textオブジェクトの名前を変更し、インスペクターのText Meshコンポーネントに表示するテキストを入力します。

カメラのビューに正しく表示されるように、X軸またはZ軸を中心に90度回転します。

3Dテキストオブジェクトを階層内の空のテキストゲームオブジェクトにドラッグします。 である

必要に応じて3Dテキストを複製します。

ステップ5:いくつかのフォントを入手する(すでに持っている)

すでにたくさんのフォントがあります。 Explorerを開き、OS / Windows / Fontsの下にあるFontsというフォルダーに移動することで、Windowsにアクセスできます。

Unityプロジェクトパネルで、Assetsに新しいフォルダーを作成し、同様にFontsと呼びます。

Unityプロジェクトに必要なフォントをコンピューターのフォントフォルダーからコピーして、プロジェクトのAssetsフォルダー内に作成した新しいFontsフォルダーに貼り付けます。

注:これにより、通常、フォントごとにいくつかの異なるファイル(通常、太字、斜体など)がコピーされます。

階層パネルでフォントを変更する3Dテキストを選択し、プロジェクトパネルのフォントフォルダーから目的のフォントをインスペクターのテキストメッシュコンポーネントの「font」というラベルの付いたボックスにドラッグします。

3Dテキストのテキストメッシュコンポーネントで、フォントの色、サイズ、その他の属性を変更できます。 編集する3Dテキストが階層で選択されている場合、これはインスペクターパネルに表示されます。

ほとんどの場合、テキストは少しぼやけて見えます。 フォントサイズを大幅に大きくすることでこれをクリーンアップできますが、この時点でカメラのビューが台無しになるため、カメラとバックグラウンドプレーンのサイズを再調整する必要があります。

ステップ6:マウスオーバーしたときにテキストの色を変更する

プロジェクトパネルにScriptsという名前の新しいフォルダーを作成します。

新しいCSharpスクリプトを作成し、MouseHoverと呼びます。

MonoDevelopでスクリプトを開きます。

このスクリプトには3つの関数があります。 最初は、テキストに元の色を指定します。 2つ目は、マウスが触れたときに色を変更するようテキストに指示し、3つ目は、マウスがホバーしないときに元の色に戻るようテキストに指示します。

 void Start(){renderer.material.color = Color.black; } void OnMouseEnter(){renderer.material.color = Color.red; } void OnMouseExit(){renderer.material.color = Color.black; } 

プロジェクトパネルから階層内の3Dテキストオブジェクトの名前にスクリプトをドラッグして、各テキストにスクリプトを追加します。

スクリプトを機能させるために、3Dテキストの各部分にコライダーを追加して、マウスがそれらに触れているかどうかをコードが認識するようにする必要があります。

コライダーを追加するには、階層で3Dテキストを選択し、インスペクターパネルに移動して、コンポーネントの追加-物理-ボックスコライダーを選択します。 テキストの各部分にボックスコライダーを追加し、「トリガーです」というボックスをオフにします。

画面の中央上部にある再生ボタンをクリックしてマウスをホバーすると、ボタンの色が変わるかどうかをテストできます。

ステップ7:ボタンを制御するスクリプトを作成する

新しいスクリプトを作成し、MainMenuと呼びます。 Scriptsフォルダーに保存し、MonoDevelopで開きます。

ブール(true / false)変数を宣言します。これは、メニューに追加するボタンごとに1つです。 2つのボタンがあるので、次のように書きました。

 public bool isStart; 
パブリックbool isQuit;

次に、OnMouseUp()という関数を作成します。 これは、マウスボタンが離されたときにアクティブになります。これは、マウスボタンが押されている間、関数が繰り返し実行されるのを防ぐため、OnMouseDown()よりもボタンをアクティブにするより良い方法です。

 void OnMouseUp(){if(isStart){Application.LoadLevel(1); } if(isQuit){Application.Quit(); }} 

Application.LoadLevel(1)は、ゲームのシーン番号1をロードします。 (メニューシーンはレベル0である必要があります。[ビルド設定]の[ファイル]でどのシーンを変更できます。)

Application.Quit()はゲームを終了しますが、これはゲームがPC / Macアプリケーションとして開かれている場合にのみ何かをします。 ゲームがUnityまたはオンラインで実行されている場合、何も起こりません。

ステップ8:ボタンを機能させる!

MainMenuスクリプトを、ボタンとして機能する3Dテキストオブジェクトのそれぞれに追加します。

ボタンのカテゴリごとにパブリックブールを宣言したため、ボタンごとにインスペクタに表示されるはずです。 インスペクターに移動し、各ボタンに適切なブール変数を確認します。 これがどのように見えるかについては上の画像をご覧ください。

これで完了です! MainMenuスクリプトに追加のコード行を追加して、動作することを確認できます。 ボタンをクリックしたときにボタンの色を変更するように指示します(ホバーしたときとは異なる色に変更します)。

 void OnMouseUp(){if(isQuit){Application.Quit(); } if(isStart){Application.LoadLevel(1); renderer.material.color = Color.cyan; }} 

関連記事