ぱらなのブログ

Unity2D シーン遷移の起点になるタイトル画面(メニュー画面)の作り方(初心者)

f:id:Para7:20180513223007p:plain

これ、今趣味でチーム開発してるゲームのプロトタイプとしてサクッと作った超簡単なタイトル画面です。

が、これを作るのにのんびり作業して1日ぐらいかかり意外とやべえぞってことで記事にしてみました。

基礎事項

まずUnityでテキストを表示するにはどうすればいいんじゃというところから始まります。

確認した限りでは、方法が2つあるんですが、間違えた方を選んでしまうと大変なことになります。

↓ここから追加しよう
f:id:Para7:20180513223437p:plain

3Dオブジェクトに入ってるのでちょっと気がつきにくいですね。間違えてUIのTextを入れてしまうと、GUI用の設定になってしまって大変なことになります。なりました。uGUIによるテキスト表示は別の用途では優秀ですが、タイトル画面には普通使わないと思います。

シーン遷移についてはここを見ました

freesworder.net

本当に3分で完成したのでよくまとまっていて素晴らしいページでした。

メニュー管理オブジェクトの構成

最初のスクショにも写ってますが、役割を文字で書き直すとこんな感じです。

GameObjectの階層構造

全体管理
  - テキスト1
  - テキスト2
  ...
  - カーソル

子オブジェクトにすることにより、全体管理の位置を動かすだけでメニュー全体の位置を簡単に動かせて楽ですね。

(ちょっと見た目にこだわってみるかということで一工夫加えているため、スクショではカーソルのところが2層構造になっていますが。)

テキスト

stringを保持するだけのスクリプトをくっつけています。

Inspector上で遷移先のシーンの名前をセットしておきましょう。

Hierarchy上でも見た目通りの順番に並べておきましょう。

カーソル

まあカーソルの作り方は人それぞれですし、割愛します。

特にこだわりがなければ適当な3Dオブジェクトとか画像をポンと設置すればいいと思います。

座標は、一番上のテキストを示す位置にしてください。そこを基準にして動かすようになっています。

f:id:Para7:20180513232251p:plain
↑私の場合、この青い四角形がカーソルです。

全体管理

スクリプトを1個くっつけてるだけです。

f:id:Para7:20180513224837p:plain

やっていることは単純で、Startではカーソルや子オブジェクトであるテキストの情報を取ってきます。

Update内で入力に応じて配列の参照位置を動かし、現在位置との差を取ってカーソルの座標に直接加えることで動かしています。

こうすることで、Unityのビューで視覚的に配置したカーソルとテキストの位置関係を崩さずに移動してくれます。つまり項目をななめや不規則に並べたりしても柔軟に対応してくれるということです。

Zキーを押すと各テキストに設定したシーンの名前を拾ってきて遷移するようになっています。

完成形

こんな感じで動くはずです。1面を公開しちゃうとリーダーに怒られそうなのでシーン遷移はしてませんが、Zを押すとちゃんと切り替わるようになっています。

f:id:Para7:20180513235024g:plain