
今回はUnityのマウスクリックでシーン移動について勉強するッピ!

マウスを押すとシーン移動する仕組みをつくるッピ!

マウスクリックとシーン移動?

まだ習ったことないわ!

ずばり、マウスをポチッとすると、
画面を切り替える方法だッピ!

シーン移動はUnityの基礎の基礎ッピ!
絶対覚えておくと良いッピ!

これからこのボタンの配置とシーン移動を一緒に勉強して行くッピよ~
マウスクリックとシーン移動について学ぼう
必要なもの

まずは必要なものを用意するッピ!

- Unity
- Windows または Mac のパソコン
が必要ッピよ~!

まだ Unity をダウンロードしてない人は
↓ の記事を参考に必要なものをインストールするといいッピ!
ボタンをつくる

まずはゲーム作成画面をつくってみるッピ!
Unity-Hubを立ち上げて、
2Dまたは3Dでプロジェクトをつくるッピよ~


できた!

いい感じッピ!
次はさっそくシーンをつくっていくッピ!
シーンフォルダがあるのを確認しよう

まずはAssetsの中にある
シーンファイルをクリックするッピ!


次は新しい画面シーンをつくるッピ~
まず
Asset→Scene
をクリックするッピ!


この【Scene】のなかに、
『SampleScene』があるのを確認するッピよ~

あったわ!
新しい画面シーンをつくる
あたらしいシーンを用意しよう


次は
シーンフォルダで右クリック→[作成]→[シーン]
でシーンを作成するッピ!


お! なんかでた

いい感じッピ!
[after]
とわかりやすいように名前をつけてみるッピ!
名前を変えてみよう


サンプルシーンの名前も変えてみるッピ!
[sampleScene]をダブルクリック
または右クリック→名前を変更を選択するッピ!


わかりやすいように
[before]と名前をつけるッピ♪

アフターの反対だな!


なんだかふしぎなウィンドウが出てきたわ!

これはそのまま
【再ロード】を選択すればオッケーッピ!

りょーかい!
[before]シーンの背景を変更する


[before]シーンを切り替えたとき
わかりやすくなるよう「背景色」を変更するッピ!
インスペクター→【camera】→【背景】→スポイト
を選択するッピよ~♪



好きな色を選んで、
メインカメラの色が変わっていればオッケーッピ!
シーンを切り替える
切り替えプログラムをつくる

シーンの切り替えプログラムをつくるッピ~!

まずは、
Assetのシーン部分で
[右クリック]→[作成]→[C#スクリプト]
を選択するッピ!



できたわ!

よくできてるッピ!
このスクリプト(プログラムの素)に
[changeShean]と名付けるッピ!
プログラムを編集する


そのまま
[changeScene]をダブルクリックして
新たにプログラムを書き込むッピよ!

Visual Studio Code などのコード編集プログラムを起動するッピ!


なんかプログラムが出てきたぞ!

いい感じッピ!


プログラムをよく見てみると
using xxxxx
という文字があることがわかるッピ!

ここは
名前空間
といって、
C#やUnityのどんな機能を使うか登録する場所
なんだッピヨ~!


C#プログラムはこんな風につくられているんだッピ!

そうなのね!

前にやったな!
復習しとこう

準備できたッピか?
それじゃあさっそくプログラムを書いていくッピ!

using UnityEngine;
の下に、
↓の文をコピーして
using UnityEngine.SceneManagement;
と入力するッピ!

これを設定すると
using UnityEngine.SceneManagement;
という意味になるんだッピ♪
入力したコード >
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class changeScene : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

入力できたら、
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
の部分を思い切って削除するッピ♪

ええ! 消しちゃっていいのか?!

そのほうが説明しやすくなるッピよ~♪


さらに削って、
1~2行目もカットするッピよ~♪

入力したコード >
using UnityEngine;
using UnityEngine.SceneManagement;
public class changeScene : MonoBehaviour
{
}

ずいぶんスッキリしたわ・・・!
これ動くのかしら?

問題ないッピ!
うさタブを信じて進むッピネ~

頼んだぞ、うさタブ!
シーン変更プログラムを入力する

次は、この
public class の中に
void Update()
{
// クリックされたら実行するプログラムです
if (Input.GetMouseButton(0))
{
SceneManager.LoadScene("after");
}
}
と入力するッピネ!

この部分が、シーン変更プログラムになるッピ!

これは、
void Update()
{
// クリックされたら実行するプログラムです
if (Input.GetMouseButton(0))
{
SceneManager.LoadScene(“after”);
}
}
という意味になるッピよ~

プログラムの分かれ道
if関数は、前のレッスンでやったね!

入力したコード >
using UnityEngine;
using UnityEngine.SceneManagement;
public class changeScene : MonoBehaviour
{
void Update()
{
// クリックされたら実行するプログラムです
if (Input.GetMouseButton(0))
{
SceneManager.LoadScene("after");
}
}
}

こんな感じかな

バッチリね!

最高ッピ!
あとはこれをファイルで保存するッピよ~

ゲームオブジェクトを作成する

シーンを切り替えるために、
空っぽのゲームオブジェクトをつくるッピ!

ゲームオブジェクト?

なんだよそれ?

ゲームオブジェクトは、
ゲームの中に登場するイラストやキューブ・3Dポリゴン・選択ボタンといったものッピ~!

今回は空っぽのゲームオブジェクトをつくって、それを土台にマウスで切り替えるプログラムを仕込むッピよ~!


左のヒエラルキーの枠のなかで右クリック(または[+]ボタン)を押して、
空のオブジェクトを選択
を選択するッピよ~

オッケー!
プログラムをオブジェクトに仕込む

それじゃあ
作ったプログラムをオブジェクトに仕込んでいくっピ!


Unity画面に戻って、
[changeScene]をGame Objectへ
ドラッグ&ドロップする
ッピ!

ドラッグ&ドロップってなんだったかしら?

ファイルをマウスで押しっぱなしにして、
選択したファイルをマウスごと移動することだよ
アイカちゃん!

そうだったわ!
ありがとうユウキくんっ


右のインスペクターのほうに
何かでたわ!

プログラムが仕込まれた証拠ッピ!
あともう少しッピ~
次はシーンをビルドに設定
するッピよ~
シーンをプロジェクトに登録する

追加したシーンは
そのままじゃ切り替えられないッピ!
必ずプロジェクトにシーン登録する作業が必要になるッピよ~


[ファイル]→[ビルド設定]
を選択するッピ~


作成した[after]シーンを
枠の中にドラッグ&ドロップするッピ!


こんな風に
[after]シーンが追加されたらオッケーだっピ!
動作確認


最後は動作確認ッピ~!
ゲームの上にある[▶]ボタンを押してゲームを開始するッピ!


できた~!

やったねユウキくんっ
Unityのマウス入力について

Unityのマウス入力には、
Inputメッソドを使うッピ!
プログラムメッソド | 発動条件 |
---|---|
Input.GetMouseButton | ボタンが押されていたら発動 |
Input.GetMouseButtonDown | ボタンが押された瞬間に発動 |
Input.GetMouseButtonUp | 押されたボタンが開放されたときに発動 |

インプットメッソド~?
って何だ?

インプットメッソドというのは、
マウスやキーボードなど、外部から入力があったときに
発動するプログラムをつくるときに使うものッピ!

そうなのね!

そしてマウスのInputメッソドは
Input.GetMouseButton
をつかうことが多いッピね~

なあ、うさタブ
using UnityEngine;
using UnityEngine.SceneManagement;
public class changeScene : MonoBehaviour
{
void Update()
{
// クリックされたら実行するプログラムです
if (Input.GetMouseButton(0))
{
SceneManager.LoadScene("after");
}
}
}

じゃあこの、
Input.GetMouseButton(0)
の(0)ってなんだ??

なんで(0)なのか、理解できないんだけど・・・

それはズバリ
引数ッピね~!

引数~??

引数ってなんだったかしら・・・?
わたしまだ覚えてなくて

引数というのは、
プログラムが予め仕組んだ、分かれ道の条件のことだっピ!

if~~●●分かれ道の条件
{ プログラムの命令文 }
みたいなとき、
実際にその分かれ道の条件が満たされるもの変数を
仕込むことができるのが引数なんだッピ!

ど、どういうことかしら・・・?

むずかしくてワカンネーって
うさタブ!

つまり今回みたいな
(0)なら、マウスの左クリック
マウスの左を押したら発動するプログラム
というのを組むことができるんだッピ!
引数 | 対応するマウスの場所 |
---|---|
(0) | マウスの左ボタン |
(1) | マウスの右ボタン |
(2) | マウスのホイール |

わかった!
0が左クリック、1が右クリックみたいな感じになるのか!

その通りッピ!
つまりさっきのコードも、0から1に変えると、
枝分かれの条件が右クリックを押したら~に変わってしまうんだッピよ~
using UnityEngine;
using UnityEngine.SceneManagement;
public class changeScene : MonoBehaviour
{
void Update()
{
// 右クリックされたら実行するプログラムです
if (Input.GetMouseButton(1))
{
SceneManager.LoadScene("after");
}
}
}

なるほどなー

勉強になったわっ!
- Assetsの中のScenesをクリックする
- サンプルシーンがあるのを確認
- 左のヒエラルキー下で右クリックをし、新しくシーンを追加
- 名前を変更
- ファイル→ビルド設定で新しく使うシーンを追加
- Assetの下で右クリックを押し、作成→C#スクリプト
- スクリプトの名前を変更し、ダブルクリックで編集
- プログラムを書き換えたら保存
- C#プログラムをドラッグ&ドロップでカメラに設定
- 動作を確認

上手くできたッピか?
これからも色んなゲーム作りやプログラムの解説をしていくッピ!
次回も楽しみにしているッピよ~~!

UnityはC#を元に作られているッピ!
まだまだ Unity や C#について勉強したい人は↓の記事を参考にするッピ♪