【Unity・初心者向け】タッチしたままだと勝手にシーンが切り替わるのを防ぐ方法
こんにちは。
最近はまっているUnityで、自分で開発している時につまづいたことを
一つご紹介したいと思います。
なお、今回は(というかこれからもほとんど)C#で書いております。
JavaScript使いの皆様、スミマセン。
例えば、こんな時に使える
ゲームオーバー画面から、タイトル画面に戻ったり。
クリアー画面から、メニュー画面に移ったり。
PCはキーが沢山ありますので、キー操作による分岐はしやすそうですが、
これがスマホなんかだと厄介。
タッチやスワイプに対応せにゃいかん。
実際のコードをご紹介
PC環境でプレイする際のシーンの切り替え方法は、こんな感じですかね。
using UnityEngine; using System.Collections; public class SceneChange : MonoBehaviour { //ここは何も書かない void Start () { } // Update is called once per frame void Update () { //Submit、つまりEnterキーでシーンを変更 if (Input.GetButtonDown("Submit")) { Application.LoadLevel("SceneB"); } } }
Application.LoadLevel("切り替えたいシーン名")でシーンを切り替えていきます。
上のコードだと、Enterキーで変わっていきます。
void Update ()の中身を少しいじって、タッチ対応させたい。
こんな感じでどうでしょう。
void Update () { //タッチ回数が0回より多い場合 if (0 < Input.touchCount) { Application.LoadLevel("SceneB"); } }
これだと、タッチ回数が1回以上の時は常にシーンが切り替わる。
もうちょっとこう、クリアー画面の余韻とか、ゲームオーバーした時の残念感を味わいたい。
ということで、以下の様にしてみました。
void Update () { //タッチ回数が0回より多い場合 if (0 < Input.touchCount) { //タッチ開始時でないと次のシーンに移らない if (Input.GetTouch(0).phase == TouchPhase.Began) { //SceneBへ切り替え Application.LoadLevel("SceneB"); } } }
TouchPhase.Beganという条件にすることで「指が画面に触れたその瞬間」という分岐を
作ることができます。
これなら、画面に指が触れたままシーンがどんどん変わっていくこともなくなると思います。
Unityのスクリプトリファレンスも参考にしてみてください。