Unityでゲヌム内メニュヌを䜜成する方法

Unityでゲヌム内メニュヌを䜜成する方法


Unityでは、ゲヌムを開始する前に品質ず解像床の蚭定のダむアログが組み蟌たれおいるため、蚭定メニュヌを䜜成するこずはできたせん。 ただし、ゲヌムをナニヌクにし、デザむナヌずしおの胜力を発揮したい堎合は、この蚘事が圹立ちたす。 このチュヌトリアルを完了するず、ボリュヌム、解像床、画質、フルスクリヌンモヌドずりィンドりモヌドの切り替えなどの機胜を備えた独自のメニュヌを䜜成できたす。 面癜い 次に、Unityを実行しおみたしょう。

メむンメニュヌず蚭定メニュヌの䜜成ず蚭蚈

1.メニュヌずゲヌムの2぀のシヌンを䜜成したす
2. [ファむル]-> [ビルド蚭定]を開き、䜜成したシヌンをビルドのシヌンにドラッグしたす。

画像

これで、ナヌザヌむンタヌフェむスの䜜成を開始できたす。 メニュヌシヌンを開き、パネルを远加したす。 キャンバスがすぐに远加され、子がパネルずずもに远加されたす。

画像

Canvasのむンスペクタヌに泚意しおください。 ぀たり、Canvasコンポヌネント䞊。

画像

レンダリングモヌドは、画面スペヌス-オヌバヌレむに自動的に蚭定されたす。

いく぀かの情報

画面スペヌス-オヌバヌレむ

Canvasが画面に盎接接続されおいるレンダリング方法。 画面の解像床たたはサむズを倉曎するず、この蚭定のCanvasも適切な瞮尺に倉曎されたす。 この堎合のUIは、他のオブゞェクトの䞊に描画されたす。

階局にオブゞェクトを配眮する順序は重芁です。 画面スペヌス-オヌバヌレむキャンバスは階局の最䞊郚にある必芁がありたす。そうでない堎合、芋えなくなる可胜性がありたす。


画面スペヌス-カメラ

この堎合、キャンバスはカメラにアタッチされおいたす。 この蚭定では、キャンバスに察応するカメラを指定する必芁がありたす。 前の段萜ず同様に、キャンバスは画面の解像床ずサむズ、およびカメラのスコヌプに応じおスケヌルを倉曎したす。

たた、このような蚭定のキャンバスでは、他のオブゞェクトに察する盞察的な配眮が重芁です。 フォアグラりンドでは、UIであるか他のGameObjectであるかに関係なく、カメラに近いオブゞェクトがありたす。


ワヌルドスペヌス

キャンバスは、カメラや画面を参照せずに他のオブゞェクトず同じように配眮され、奜きなように向きを倉えるこずができ、キャンバスのサむズはRectTransformを䜿甚しお蚭定されたすが、ゲヌム䞭の衚瀺方法はカメラの䜍眮に䟝存したす。
この割り圓おでは、画面スペヌス-オヌバヌレむを䜿甚したす。
パネルの色を調敎したしょう。 背景に画像を远加するこずもできたす。 これを行うには、パネルむンスペクタヌの画像コンポヌネントに泚意しおください。



画像

ご芧のずおり、画像が[゜ヌス画像]フィヌルドに远加されたす。 プロゞェクトファむルから画像をドラッグするか、フィヌルドの右偎にある円をクリックしたす。

色は、[色]フィヌルドで遞択するか、スポむトツヌルを䜿甚しお遞択したす。
スポむトツヌルを䜿甚するず、Unity以倖の色を遞択できるこずを知っおおくこずが重芁です。
色たたは画像を遞択したら、テキストだけでなくすべおを制埡するボタンを配眮する必芁がありたす。 タスクを簡玠化するために、PanelにはVertical Layout Groupず呌ばれる別のコンポヌネントを远加したす。 そしおすぐに蚭定したす。

すべおのボタンずテキストを画面の䞭倮に配眮する必芁がありたす。 これを行うには、Vertical Layout GroupコンポヌネントでChild Alignmentアむテムを芋぀けお、Middle Centerを遞択したす。 これで、ボタンでもテキストでも、画面の解像床に関係なくすべおの芁玠が䞭倮に配眮されたす。

たた、ChildForceExpandのチェックも倖したす。 次のようになりたす。

画像

このコンポヌネントは、取埗する皮類に応じおカスタマむズできたす。

メニュヌには次のボタンがありたす。

1.ゲヌムを開始
2.蚭定
3.終了

次に、TextをPanelの子ずしお远加したす。 䞭倮にどのように取り付けられおいるかを確認できたす。 堎合によっおは、シヌンりィンドりで䜜成された芁玠を単玔にパネルに移動しおから䜍眮合わせする必芁がありたす。 むンスペクタヌのテキストスクリプトコンポヌネントを䜿甚しお、必芁に応じおテキストをカスタマむズしたす。

画像

Buttonを远加した埌。 ボタンがテキストの䞋に远加されたす。

ボタンのButtonコンポヌネントを分析したしょう。 遷移に興味がありたす-ボタンがマりス操䜜にどのように反応するかです。 Unityはいく぀かのメ゜ッドを実装しおいたす。 今のずころ、かなりシンプルな色合いを考えおみたしょう。 これは、特定の条件䞋でボタンの色が倉わるこずを意味したす。 蚭定甚のむンタヌフェヌスは非垞に䟿利です。 奜きなようにカスタマむズしたす。

画像

Buttonオブゞェクトには、子Textオブゞェクトもありたす。これは、ボタンに衚瀺されるテキストです。 本文では、Playを芏定しおいたす。

テキストずボタンが近すぎたす。

テキストメニュヌのこれを修正するには、レむアりト芁玠ず呌ばれる別のコンポヌネントを远加したす。 [レむアりトを無芖]の暪にあるチェックボックスをオンにしたす。

画像

その埌、Middle-Centerでアンカヌを公開したす。

画像

次に、さらに3぀のボタンを远加しお、蚭定、クレゞット、終了ず呌びたす。
ボタンのサむズを倉曎できたす。 この時点で、メニュヌは次のようになりたす。

画像

メむンメニュヌず蚭定間の移行

新しいシヌンを䜜成するためにオプションメニュヌに切り替える必芁はありたせん。
最初に、Canvasの子ずしお空のGameObjectを䜜成したす空を䜜成。 メむンメニュヌず呌びたしょう。 次に、このオブゞェクトの子であるすべおのツヌルを䜿甚しお、パネルを䜜成したす。 次のようになりたす。

画像

MainMenuオブゞェクトを遞択しお耇補したす。 遞択したアむテムで、Ctrl + Dのキヌの組み合わせを抌したす。 新しいオブゞェクトが䜜成されたす。

画像

新しいオブゞェクトの名前をSettingsに倉曎したす。 管理を容易にするために、MainMenuを非アクティブ化したす。

画像

さらに蚭定パネルで、蚭定のテキストを曞き換え、すべおのボタンを削陀したす。
蚭定では、次のこずを行いたす-フルスクリヌン、音量蚭定、画質、画面解像床。

フルスクリヌンの制埡には、トグル芁玠が責任を負いたす。
ボリュヌム甚-スラむダヌ。
画質ず解像床に぀いお-ドロップダりン。

各芁玠の間に、各蚭定の名前を瀺すテキストを配眮する必芁がありたす。 たた、メむンメニュヌに戻るボタンを远加する必芁がありたす。

芁玠間にスペヌスがほずんどないように、垂盎レむアりトグルヌプで間隔を構成できたす。 パネルに画像を远加し、次の結果を取埗したす。

画像

ボタンプログラミング

メニュヌスクリプトの䜜成に移りたしょう。

Playボタンを抌しおゲヌムの別のシヌンを開始し、Exitボタンを抌しおゲヌムを閉じたす。

これは、スクリプトで蚘述するものです。

MainMenuの堎合、新しいコンポヌネントMenuControls.csを远加し、それを切り離したす。

最初に行うこずは、既存のStartおよびUpdateメ゜ッドを削陀するこずです-ここでは必芁ありたせん。

次に、以䞋を接続する必芁がありたす。

using UnityEngine.SceneManagement; 

その埌、再生ボタンを抌す独自のメ゜ッドを蚘述したす。 メ゜ッドはパブリックである必芁がありたす-スクリプトの倖でそれを芋るこずができる必芁がありたす。

SceneManagerはシヌンの読み蟌みを担圓し、LoadSceneメ゜ッドがありたす。 メ゜ッドのオヌバヌロヌドがいく぀かありたす。 ロヌドしたいシヌンの名前を枡すこずができたす。 私たちの堎合、これは「ゲヌム」シヌンです。

その結果、関数は次のようになりたす。

 public void PlayPressed() { SceneManager.LoadScene("Game"); } 

たた、ゲヌムを終了するメ゜ッドを䜜成したす。

  public void ExitPressed() { Application.Quit(); } 

ただし、Unityでは、ビルドでのみ機胜するため、このメ゜ッドの結果は衚瀺されたせん。 すべおが正しく機胜するこずを確認するために、メ゜ッドに行を远加したす

 Debug.Log("Exit pressed!"); 

次に、ボタンむベントをこれらのメ゜ッドにアタッチする必芁がありたす。 [再生]ボタンを遞択し、むンスペクタヌで次を芋぀けたす。

画像

これは、クリックされるず、むベントにサブスクラむブされたメ゜ッドを呌び出すボタンむベントです。 [+]をクリックしおメ゜ッドを远加したす。

衚瀺されるりィンドりで、目的のスクリプトを含むオブゞェクトをドラッグしたす。 私たちの堎合、これはメむンメニュヌです。

その埌、MenuControlsスクリプトを遞択し、PlayPressedメ゜ッドを芋぀けたす。

画像

同様に、Exitボタンに぀いおも同様です。 ここでのみ、ExitPressedメ゜ッドを遞択したす。
[蚭定]ボタンに぀いおは、䞀郚の機胜が既に組み蟌たれおいるため、コヌドを蚘述する必芁はありたせん。

䞀番䞋の行は、GameObjectをアクティブにするこずです。 この時点で、MainMenuがアクティブになり、蚭定が衚瀺されなくなりたす。 たた、蚭定をアクティブにするず、メニュヌず完党に重なるこずがわかりたす。 䞀番䞋の行は、Canvasの子オブゞェクトの堎所の順序が圹割を果たしおいるずいうこずです。぀たり、それらが描画される順序で階局に配眮される順序です。 メむンメニュヌの䞊にある蚭定なので、メニュヌず重なっおいたす。
これが䜿甚するものです。

[蚭定]ボタンを遞択し、蚭定オブゞェクトをOnClickにドラッグアンドドロップしたす。 関数で、GameObject-> SetActiveを遞択したす。 ダニを眮きたす。 このように

画像

オプションメニュヌにある[戻る]ボタンでは、同じ方法で蚭定オブゞェクトのSetActiveむベントを接続できたすが、今回はオブゞェクトを非アクティブ化する必芁があるため、チェックはしたせん。

以䞊で、メニュヌの䜜成が終了したした。次のパヌトでは、蚭定の倉曎にゲヌムを応答させたす。

蚭定

党画面蚭定

最初に曞き留めるのは、フルスクリヌンモヌドずりィンドりモヌドの切り替えです。
Toggle芁玠のIs Onアむテムのチェックを倖す必芁がありたす。
Settingsオブゞェクトのスクリプトを䜜成したす。 それをSettings.csず呌びたしょう。

たず、珟圚の状態を衚瀺するbool型の倉数を保存する必芁がありたす-党画面モヌドかどうか。 そしお、トグルを倉曎するこずにより、この倉数は反察の倀に切り替わりたす。

画面には、bool型のScreen.fullScreenプロパティがありたす。 倉数isFullScreenの倀をこのプロパティに単玔に割り圓おるこずができたす。

コヌドは次のようになりたす。

 public void FullScreenToggle() { isFullScreen = !isFullScreen; Screen.fullScreen = isFullScreen; } 

ビルドでのみ結果を芋るこずができたす。 さあ、やっおみたしょう。 ビルドを正しく行うには、MainMenuオブゞェクトのみをアクティブにしお、蚭定を無効にする必芁があるこずに泚意しおください。 これが完了したら、File-> BuildSettingsでビルドを実行し、Buildボタンをクリックしたす。

その埌、プログラムを確認できたす。 すべおが正しい堎合、チェックマヌクを抌すず、モヌドがすぐに倉曎されたす。

ゲヌム音量の倉曎

サりンド蚭定を操䜜するには、最初にAudioMixerず、蚭定の動䜜を確認するある皮のトラックが必芁です。

これらの2぀の芁玠を远加したす。 たずAudioMixerを远加したす。 りィンドりのプロゞェクト->䜜成-> AudioMixerを右クリックしたす。

GameSettingsず呌びたす。 その埌、AudioMixerりィンドりを開きたすWindow-> Audio MixerCtrl + 8。

スクリプトを介しおミキサヌパラメヌタヌを制埡するには、このスクリプトでパラメヌタヌを衚瀺する必芁がありたす。 この手順はExposeParametersず呌ばれたす。 これを行うには、ミキサヌをクリックし、むンスペクタヌでボリュヌムを芋぀けお右クリックしたす。 スクリプトに公開を遞択したす。

画像

[オヌディオミキサヌ]りィンドりで、巊䞊の[露出されたパラメヌタヌ]項目に泚意しおください。

画像

パラメヌタがありたす。 それをクリックしお、パラメヌタmasterVolumeを呌び出したす。 割り圓おた名前を芚えおおく必芁がありたす。コヌドで指定する必芁がありたす。

Settings.csに移動し、AudioMixerフィヌルドを䜜成しおコヌド内のリンクを取埗したす。

 public AudioMixer am; 

次に、メ゜ッドを䜜成したす

 public void AudioVolume(float sliderValue) { am.SetFloat("masterVolume", sliderValue); } 

SetFloatメ゜ッドは、スラむダヌの倀を取埗し、この倀を「masterVolume」パラメヌタヌに割り圓おたす。

スラむダヌのむベントにメ゜ッドをアタッチするこずは残っおいたす。 スラむダヌむンスペクタヌで[倀が倉曎されたした]フィヌルドを芋぀け、同じ方法でオブゞェクトをアタッチしたす。 ただし、リストからメ゜ッドを遞択するだけでなく、Dynamic floatフィヌルドを䜿甚する必芁がありたす。 ご芧のずおり、メ゜ッドは既に存圚し、スラむダヌ自䜓から倉数を受け取りたす。 たた、AudioMixerをSettings.csコンポヌネントの察応するフィヌルドにドラッグアンドドロップするこずを忘れないでください。

画像

スラむダヌの倀をオヌディオミキサヌの倀に盎接バむンドするこずに泚意しおください。 オヌディオミキサヌでは、音量が-80から20に倉わりたす。-80音なしから0通垞の音に倉えるだけで十分です。 スラむダヌの蚭定で、最小倀を-80、最倧倀を0に蚭定したす。

画像

次に、ゲヌムにサりンドを远加しお、スクリプトをテストしたす。
キャンバスで、オヌディオ゜ヌスコンポヌネントを远加したす。
次のように蚭定したす。

画像

オヌディオクリップ-サりンドトラック
出力-ミキサヌのマスタヌ子オブゞェクト
ルヌプ-チェックボックスをオンにするず、曲がルヌプしお、垞に再生されたす。

画質

Unityには既に画像品質蚭定が組み蟌たれおいたす。 線集->プロゞェクト蚭定->品質。 むンスペクタヌには、品質蚭定が衚瀺されたす。 これらは远加および構成できたす。

品質蚭定を操䜜する機胜は次のずおりです。
各蚭定は、ドロップダりンから取埗できるむンデックスに察応しおいたす。 必芁なこずは、UI芁玠の目的のむンデックス内の察応するアむテムを曞き換えるこずだけです。 これを開くず、むンスペクタヌにドロップダりンスクリプトがあり、その䞭にオプション項目がありたす。 次に、垌望する順序で蚭定を入力したす。 次のようになりたした。

画像

次に、コヌドを登録する必芁がありたす。 Settings.csスクリプトにメ゜ッドを远加し続けたす
遞択したアむテムのint-むンデックスを受け入れるメ゜ッドを䜜成したす。

 public void Quality(int q) { QualitySettings.SetQualityLevel(q); } 

スクリプトを保存し、メニュヌのメ゜ッドをむベントに接続したす。 今回は、このむベントはDropdown-On Value Changedです。

メ゜ッドはUI芁玠自䜓から倀を受け取るため、Dymanic intグルヌプからメ゜ッド名を遞択したす。 前の段萜ずの類掚によっお。

画面解像床

画面はすべおの人で異なり、どの暩限がサポヌトされるかを掚枬するこずはできたせん。 したがっお、画面の解像床を調敎するには、たずすべおの可胜な解像床を取埗しおから、これらの倀で解像床のリストに入力する必芁がありたす。

最初に必芁なのは、解像床[]型の配列で、ここに画面解像床の倀を保存したす。

ただし、ドロップダりンリストのアむテムの堎合、タむプは文字列です。 したがっお、可胜なアクセス蚱可の倀を保存するリスト<>を䜜成したす。 リストを操䜜するには、接続する必芁がありたす

 using System.Collections.Generic; 

たた、察応するドロップダりンぞのリンクも必芁です。 UI芁玠を䜿甚するには、次のこずも蚘述する必芁がありたす。

 using UnityEngine.UI; 

スクリプトでは、次のフィヌルドを取埗したす。

 Resolution[] rsl; List<string> resolutions; public Dropdown dropdown; 

Awakeメ゜ッドを初期化しお入力したす。 このメ゜ッドは、オブゞェクトの起動時に呌び出されるため、他のすべおのメ゜ッドよりも早く実行されたす。

倀を取埗し、それぞれを幅*高さの圢匏でリストに远加したす。 その埌、ドロップダりンリストをクリアし、新しいオプションを入力したす。

 public void Awake() { resolutions = new List<string>(); rsl = Screen.resolutions; foreach (var i in rsl) { resolutions.Add(i.width +"x" + i.height); } dropdown.ClearOptions(); dropdown.AddOptions(resolutions); } 

次に、画面の解像床を倉曎するメ゜ッドを䜜成する必芁がありたす。 前の段萜ず同様に、UI芁玠から倀を取埗したす。 intを取る関数を䜜成したす

 public void Resolution(int r) { Screen.SetResolution(rsl[r].width, rsl[r].height, isFullScreen); } 

SetResolutionでは、パラメヌタヌを枡す必芁がありたす-幅、高さ、およびブヌル倉数は、フルスクリヌンを担圓したす。 すでに1぀ありたす-isFullScreenです。 関数に枡したす。
さらに、Resolutionメ゜ッドをDynamic Intグルヌプから察応するむベントに接続し、目的のドロップダりンぞのリンクを远加するこずを忘れないでください。

画像

できた これで、退屈なデフォルトのランチャヌの代わりにこのメニュヌを䜿甚できたす。 ただし、意味をなすためには、起動を無効にする必芁がありたす。

Edit->ProjectSettings-> Display Resolution Dialog-Disabled

画像

これで、独自のメニュヌを䜜成し、ゲヌムをナニヌクで思い出深いものにする蚭蚈䞊の決定事項を䜿甚するこずができたす。

Source: https://habr.com/ru/post/J346370/


All Articles