Unity:ボタンクリックでシーン間を遷移(移動)する

Unity:ボタンクリックでシーン間を遷移(移動)するUnity
スポンサーリンク

Unityでボタンクリックによるシーン間の遷移(移動)について解説します。
とは言っても、SceneManagerクラスのLoadScene()メソッドを使うだけですが…

結論から言うと、

public void OnClickStartButton()
{
	SceneManager.LoadScene("game");
}

のようなメソッドを作ってボタンに登録するだけです。
LoadSceneメソッドの引数にはシーン名を文字列として指定します。

では詳しく解説します。

スポンサーリンク

今回のサンプルの実行イメージ

タイトル画面にスタートというボタンが表示されています。
Unity:ボタンクリックでシーン間を遷移(移動)する

スタートボタンをクリックするとゲーム画面に移動します。
Unity:ボタンクリックでシーン間を遷移(移動)する

これだけです。

プロジェクトの準備

Unityを起動し、+Newを選択、プロジェクト名を「ボタンによるシーン間の移動」としてCreate projectボタンをクリックします。

Unity:ボタンクリックでシーン間を遷移(移動)する

今回のプロジェクトに必要なファイルは以下の3つです。

1.titleシーン(title.unity)
2.gameシーン(game.unity)
3.ボタンクリック用のスクリプト(StartButtonScript.cs)

では順番に作成していきます。

titleシーンの準備

File > Save Scene As… を選択します。

Unity:ボタンクリックでシーン間を遷移(移動)する

ファイル名は「title」として保存をクリック。
Unityアイコンのシーンファイルが作成されます。

Unity:ボタンクリックでシーン間を遷移(移動)する

titleシーンにボタンを追加します。

Hierarchyウインドウで
Create > UI > Button を選択します。

Unity:ボタンクリックでシーン間を遷移(移動)する

シーンにボタンが貼り付けられます。(見やすいようにGameウインドウに切り替えておいてください)

Unity:ボタンクリックでシーン間を遷移(移動)する

ボタンの位置を画面の中央に設定しておきます。(この操作は必ずしも必要ではありません。ボタンの位置が見やすければ大丈夫です)

Inspectorウインドウのmiddle-centerと書かれている四角い部分をクリックし、Altキーを押しながら中央の四角い部分をクリックします。

Unity:ボタンクリックでシーン間を遷移(移動)する

これでボタンは画面の中央に配置されます。

ボタンの文字列変更をしてみます。
HierarchyウインドウのTextの部分をクリック。
Unity:ボタンクリックでシーン間を遷移(移動)する

Inspectorウインドウ側で、ボタンの文字列を「スタート」に変更します。
Unity:ボタンクリックでシーン間を遷移(移動)する

titleシーンは以上です。

gameシーンの準備

つづいてgameシーンを作成します。
Assetウインドウの何もないところで右クリックし、Create > Sceneを選択します。

Unity:ボタンクリックでシーン間を遷移(移動)する

シーン名は「game」とします。

Unity:ボタンクリックでシーン間を遷移(移動)する

一応分かりやすいようにテキストUIで「ゲームシーンです」と表示するようにしておきます。

Hierarchyウインドウで
Create > UI > Text を選択。

Unity:ボタンクリックでシーン間を遷移(移動)する

作成されたTextはCanvasの中にあります。Textをクリックします。
Unity:ボタンクリックでシーン間を遷移(移動)する
少し文字を大きめに「ゲームシーンです」と表示します。

Inspectorウインドウでそれぞれ以下のように変更してください。

WidthとHeightは、それぞれ320と50
Textに「ゲームシーンです」と入力。
Font Size28上下左右中央ぞろえの設定にしました。(Alignment部分)

※上記設定は適当です。ただFont SizeがWidthとHeightの幅を超えると文字が見えなくなるので、その際はWidthとHeightを大きめに調整するようにしてください。

Unity:ボタンクリックでシーン間を遷移(移動)する

スクリプト(StartButtonScript.cs)の準備

スクリプトはtitleシーンのボタンにアタッチします。
まず、titleシーンをダブルクリックして画面に表示しておきます。

Unity:ボタンクリックでシーン間を遷移(移動)する

Assetウインドウの何もないところで右クリックしてCreate > C# Script を選択します。

Unity:ボタンクリックでシーン間を遷移(移動)する

名前は「StartButtonScript」とします。
作成したStartButtonScriptをダブルクリックします。

Unity:ボタンクリックでシーン間を遷移(移動)する

VisualStudioが起動します。
今回最初から記述されているStartメソッドとUpdateメソッドは利用しませんので、削除します。

Unity:ボタンクリックでシーン間を遷移(移動)する

シーンの遷移には、SceneManagerクラスのLoadSceneメソッドを利用します。
プログラムの先頭に

using UnityEngine.SceneManagement;

を追加してから、以下のメソッドをStartButtonScriptクラス内に記述します。

public void OnClickStartButton()
{
	SceneManager.LoadScene("game");
}

今回メソッド名をOnClickStartButtonとしました。この名称はあとでボタンイベント設定で必要になります。

LoadSceneの引数は遷移したいシーン名を文字列として指定するだけです。
上記のスクリプトの場合、gameという名前のシーンファイルに遷移(移動)するという意味になります。

スクリプトは以上です。

ソースコード全体を示します。

StartButtonScript.cs

using UnityEngine;
using UnityEngine.SceneManagement;

public class StartButtonScript : MonoBehaviour {

	public void OnClickStartButton()
	{
		SceneManager.LoadScene("game");
	}

}

ボタンイベントの設定

まずはtitleシーンのボタンに作成したStartButtonScriptをアタッチします。
StartButtonScriptをHierarchyウインドウのButtonまでドラッグ&ドロップしてください。
Unity:ボタンクリックでシーン間を遷移(移動)する

HierarchyウインドウのButtonが選択された状態でInspectorウインドウの一番下までスクロールするとButton(Script)という項目On Click()とい項目があり、List is Emptyとなっているはずです。

この部分の+ボタンをクリックします。

Unity:ボタンクリックでシーン間を遷移(移動)する

クリックするとNone(Object)という項目が出現します。

Unity:ボタンクリックでシーン間を遷移(移動)する

ここにHierarchyウインドウのButtonドラッグ&ドロップします。

Unity:ボタンクリックでシーン間を遷移(移動)する

No Functionと表示された部分をクリックして

StartButtonScript > OnClickStartButton()とたどって、選択します。

Unity:ボタンクリックでシーン間を遷移(移動)する

選択後

Unity:ボタンクリックでシーン間を遷移(移動)する

以上でボタンをクリックしたときの処理設定は完了です。

ゲーム内に必要なシーンを設定する

ではすぐに実行といきたいところですが、Unityではそのプロジェクトに必要なシーンの設定が必要です。

今回の場合は、titleシーンgameシーンの2つがゲームに必要なシーンです。
これらの管理はBuild Settings…で行います。

File > Build Settings… を選択して現時点での状態を確認します。

Unity:ボタンクリックでシーン間を遷移(移動)する

以下は私の環境での表示なので参考までに見てください。
私の場合、初期状態では必要ないシーンがデフォルトで設定されていました。

必要ないので選択してDeleteキーを押します。
Unity:ボタンクリックでシーン間を遷移(移動)する

次にAdd Open Sceneボタンをクリックして現在作業中のシーンをビルド設定に追加します。

Unity:ボタンクリックでシーン間を遷移(移動)する

これでtitleシーンが選択されました。

 

今回gameシーンも含めたいので、一旦Build Settingsウインドウを閉じ、gameシーンファイルをダブルクリックして開いておきます。

Unity:ボタンクリックでシーン間を遷移(移動)するvUnity:ボタンクリックでシーン間を遷移(移動)する

再度Build Settings…を選択し、Add Open Buttonをクリックしてgameシーンも追加します。

Unity:ボタンクリックでシーン間を遷移(移動)する

ちなみにシーン名の横についている01は実行順です。0はビルドして実行した際の起動画面になります。(Unityエディタ上での実行の場合は、現在表示されているシーンが最初に実行されます)
今回はこのままで大丈夫なのでそのままBuild Settingsウインドウを閉じます。変更したい場合は、ドラッグ&ドロップで位置を変更できます。

開発画面では、現在表示されているシーンが実行ボタンを押した時の対象になるので、一度titleシーンをダブルクリックして表示しておきます。

Unity:ボタンクリックでシーン間を遷移(移動)する

これで実行ボタンを押してみます。

startシーンが表示されます。

Unity:ボタンクリックでシーン間を遷移(移動)する

スタートボタンをクリックすると…

Unity:ボタンクリックでシーン間を遷移(移動)する

きちんとgameシーンに遷移(移動)しました!

わたしとしては、ボタンのイベント設定が少々分かりにくく感じました。(何度やっても慣れない!)

以上、Unityでボタンクリックでシーン間を遷移(移動)するでした。

コメント