今回は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;
という意味になるんだッピ♪
入力できたら、
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
の部分を思い切って削除するッピ♪
ええ! 消しちゃっていいのか?!
そのほうが説明しやすくなるッピよ~♪
さらに削って、
1~2行目もカットするッピよ~♪
ずいぶんスッキリしたわ・・・!
これ動くのかしら?
問題ないッピ!
うさタブを信じて進むッピネ~
頼んだぞ、うさタブ!
シーン変更プログラムを入力する
次は、この
public class の中に
void Update()
{
// クリックされたら実行するプログラムです
if (Input.GetMouseButton(0))
{
SceneManager.LoadScene("after");
}
}
と入力するッピネ!
この部分が、シーン変更プログラムになるッピ!
これは、
void Update()
{
// クリックされたら実行するプログラムです
if (Input.GetMouseButton(0))
{
SceneManager.LoadScene(“after”);
}
}
という意味になるッピよ~
プログラムの分かれ道
if関数は、前のレッスンでやったね!
こんな感じかな
バッチリね!
最高ッピ!
あとはこれをファイルで保存するッピよ~
ゲームオブジェクトを作成する
シーンを切り替えるために、
空っぽのゲームオブジェクトをつくるッピ!
ゲームオブジェクト?
なんだよそれ?
ゲームオブジェクトは、
ゲームの中に登場するイラストやキューブ・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#について勉強したい人は↓の記事を参考にするッピ♪