名前を入力中に他のスプリクトが「Enter」を拾ってしまう -> 入力のバッティング
「ゲーム状態」をGameManagerで一旦管理して、スクリプトごとに「この状態の時だけ動く」と制限をかけた。
名前を入力する際に後ろの吹き出しの入力を止める方法
まずゲーム全体の状態を管理する
新しいスクリプトex)GameManagerを作成して、以下のようにする
public enum GameState
{
Playing, // 普通の状態(探索とか)
Naming, // 名前入力中
}
public class GameManager : MonoBehaviour
{
public static GameManager instance; // どこからでもアクセスできるようにする
public GameState gameState = GameState.Playing;
void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject); // シーンをまたいでも保持
}
else
{
Destroy(gameObject); // ダブり防止
}
}
}
コードの説明
public enum GameState
{
Playing, // 普通の状態(探索とか)
Naming, // 名前入力中
}
ここはゲームの状態を分けるための型を作成
- enum GameDtateとは
名前付きの数字
// 実際にはこういう数字が割り当てられてる
Playing = 0,
Naming = 1
なので比較演算子などで使用が可能
- Awake()メソッド
初期化の処理
void Awake()
{
if (instance == null) // 初めて作られたかチェック
{
instance = this; // このオブジェクトを自分自身として登録
DontDestroyOnLoad(gameObject); // シーンを切り替えても消えないようにする
}
else // すでに1つあったら、2つ目を破棄
{
Destroy(gameObject);
}
}
GameManagerスクリプトの使い方
最初はPlayingにしておいて、名前を入力する際に
GameManager.instance.gameState = GameState.Naming;
を設定する