MENU

【Unity】最強のゲームクリエイターに俺はなる | ポーズ画面作成!

ども!2度寝撲滅委員会会長のFORM_07です!

 

 

2度寝なんてしたくない・・・・したくない・・・・のにっ・・・・クッ・・・‼

 

 

前回↓はHPバーを実装させましたね。

 

【Unity】最強のゲームクリエイターに俺はなる | HPバーを表示させよう - FORM_07’s blog

 

今回はUI編第2回ということでポーズ画面を作りたいと思います!

 

 

さっそくやっていく。

 

 

 

 

UIはこんなんでいいかな。

 

もちろんデザインは後々調整します。

 

ちなみに、ボタンはHorizontal Layout Groupコンポーネントできれいに並べてます。

 

これ便利

 

で、マウス操作なしでボタンを選択できるようにしたいから、、、

 

 

 

 

InspectorビューのNavigationをこんな感じ↓になるように設定する。

 

 

(VisualizeをONにしてね)

 

 

Unity便利すぎるぞ

 

この黄色い矢印がついてるところは矢印キーで操作できる。

 

 

すげ~~~~。

 

 

でもこれ注意なのが、最初にどれかのボタンが選択されてないと矢印キーで操作できない。

 

だから、ポーズ画面が開かれたタイミングでどれか1個ボタンが選択された状態になるようなスクリプトをつくる。

 

 

∈^0^∋

 

つくった。

 

なんて簡単なんだUnity。。。。便利すぎるぞ。。。。。

 

 

あとはInput Actionsでポーズ画面の開閉用ボタンをBindingして、、、

 

 

だいぶ慣れた

 

コードを書い、、、、、

 

 

 

・・・・・(。_。)

 

 

まてよ。。このままだとポーズ画面開いててもゲームが動き続けちゃうな。

 

 

ポーズさせないと。。。。。

 

 

ま、まさか、、、あの、ステート駆動システムの出番だというのか。。。

 

 

ってわけでステート駆動させていきます。

 

 

ステート駆動っていうのは、文字通りState(状態)を切り替えてゲームを動かすシステムのことで、ある程度の規模のゲームにはほぼ必須らしい。

 

 

まぁまずは手を動かしてそれから理解しよ。

 

 

まずはStateを入れておくenumをつくっておく。

 

どんどん増えてくんだろうな・・・

 

とりあえずこんだけ。

 

そして後々必要になりそうだからState切り替え用の関数をつくる。

 

 

現段階では不要

 

今のStateを保持する変数をつくって、

 

 

初期化も

 

そしたらコードをちょっと書き換える。

 

 

StateがMenu以外のときはif文でプレイヤー操作の入力を無視させただけ

 

あと、これだけじゃサフィアちゃん以外のものが動いたままだから、

 

 

いいね

 

こんな感じ↑でポーズ画面を開いたときにTime.timeScale0にする。

 

timeScaleっていうのは、簡単にいえば時間の流れるスピードのことで、標準は1

 

0.5にすれば時間の流れが普段の半分くらいの遅さになるし、0にすれば完全に止まる。

 

 

ただ、Update関数は動いたままなので、

 

 

 

 

こんな感じ↑にTime.deltaTimeを使うことでサフィアちゃんが移動するのを防ぐ。

 

というのも、deltaTimetimeScale0のときには0になるからです。

 

これでコードは書き終えた。

 

テスト。

 

 

 

・・・って思ったけど自分の録画方法だとしながら操作できなかった。

 

 

なんだよ。

 

 

ま、一応いい感じに動いてくれてたので、OKです!

 

今回はここまで!

 

次回はさらにポーズ画面をいじくっていきたい!

 

form-07.hatenablog.com