Edasyのゲーム日記

E'dashです。このブログでは制作中のゲームの進捗やフリーゲームの紹介を主に書き込みます。

世界一簡単なステージセレクトのコード

自称ですけどねw

 

今日はスクールがあり、開発がすこぶる進みました。

ちなみにこれが今日の努力の結果です。

 

今回はこの動画の中でたぶん凄く簡単にできるステージセレクトの方法を友達の開発者「ポテト」に教えてもらい、実装してみました。

今まではキーボードで指定したキーを押してシーンをロードしていましたが、それだとどれから進めたらいいのかわからないし、ステージを増やしにくいです。

ですがこの方法を使えばいい感じになると思います。

 

では早速紹介!

まずはしっかり最初に「UIとSceneManagementを使う」と設定しましょう。

using UnityEngine.UI;
using UnityEngine.SceneManagement;

 

そしたら「代入先をSelectnumberにして、Textに表示できるようにnumberを使おう」という風なコードを打ち込みます。

public int Selectnumber;

 public Text number;

 

そしたら「最初はSelectnumberは1」としましょう。

void Start () {

Selectnumber = 1;
}

こうすれば、最初からステージ1を選択できるようになります。

 

次はvoid Updateの中にコードを打ち込みます。

まずは「Selectnumberの数をTextのnumberに代入して表示させる」ようにします。

number.text = Selectnumber.ToString ();

 

さて次は十字キーでSelectnumberの数字を変化」させましょう。

if (Input.GetKeyDown (KeyCode.RightArrow) && Selectnumber < 20) {

Selectnumber += 1;

}

ここで注意!

Selectnumber < 20を付けないと、 Selectnumberは永遠に増えます。

しっかりステージ数に合わせてここを変えましょう。

 

勿論逆もしかり。

 if (Input.GetKeyDown (KeyCode.LeftArrow) && Selectnumber > 1) {

Selectnumber -= 1;

}

こうしないと数がずっとーされていきます。

ステージー1とかありえないですしねw

 

ここまで来ればもう簡単です。

「スペースキーを押して、もしSelectnumberがこの数だったらこのシーンに移動する。」を打ち込みましょう!

例えば...

if (Input.GetKeyDown (KeyCode.Space)) {

if (Selectnumber == 1) {

SceneManager.LoadScene ("S1");

}

}

これだったら「スペースキーを押したとき、Selectnumberが1だったのでS1に移動します」ということになります。

後は中の数字を変えてあげたら簡単に他のシーンに移動することができます。

 

大まかにいえばこんな感じです。

最後に、簡単なコードを書いときます。

ステージは1と2しかない設定ですが、そこは各自打ち直してください。

 

using UnityEngine;

using UnityEngine.UI;

using UnityEngine.SceneManagement;

public class Botansousa : MonoBehaviour {

 

 public int Selectnumber;

public Text number;

void Start () {

Selectnumber = 1;
}

void Update () {

number.text = Selectnumber.ToString ();

if (Input.GetKeyDown (KeyCode.RightArrow) && Selectnumber < 20) {

Selectnumber += 1;

}

if (Input.GetKeyDown (KeyCode.LeftArrow) && Selectnumber > 1) {

Selectnumber -= 1;

}

 if (Input.GetKeyDown (KeyCode.Space)) {

if (Selectnumber == 1) {

SceneManager.LoadScene ("S1");

}

if (Selectnumber == 2) {

SceneManager.LoadScene ("S2");

}

}

}

}

 

間違ってたらごめんなさい!