//tips
//システムの微調整
大まかなゲームの流れは完成したかと思うので、UIの差し替えであったり、挙動などの微調整を加えていく。
キャラクター選択パネルの画像の取り替えとtextの文字変更を行う。
Roomから遷移し、キャラクターのチョイスを行ったらwolfwinシーンに遷移してしまう問題、roomに帰ってきた後に入室ボタンを押しても入室できず、退室ボタンを押すことで再度入室対応される問題が発生したので、それらに対処する。
wolfUIにアタッチしている下記の termcheck()メソッドの実行が早すぎるためこれらの問題が起きているのではないかと考える。
public void termcheck()
{
Winscenemove = GameObject.FindGameObjectWithTag("Wincheck").GetComponent<Winscenemove>();
if (myPlayer == null)
{
Winscenemove.Humanwin();
//SceneManager.LoadScene("humanwin");
}
else
{
if (players.Length < 2)//wolfは生存しているのでhumanがいる場合は2以上
{
Winscenemove.Wolfwin();
//SceneManager.LoadScene("wolfwin");
}
}
}
一体目のプレイヤー読み込みでwolfUIも表示される時間もあるのでその時間で、スクリプトが稼働し、human側であるにも関わらずplayers.Length < 2が作用して、シーン遷移が行われてしまっているよう。
まずはプレイヤー全員を画面上で確認してからtermcheck();メソッドを実行させるようにしたいのでboolを挿入する。
void Update()
{
players = GameObject.FindGameObjectsWithTag("Player");
Debug.Log(players.Length);
if (players.Length>1)
{
gamestart = true;
}
if (gamestart)
{
foreach (GameObject player in players)
{
PhotonView photonView = player.GetComponent<PhotonView>();
if (photonView.IsMine)
{
myPlayer = player; //wolf役にのみアタッチされ有効
}
}
termcheck();
}
}
これでゲーム開始時の遷移問題については解決された。
ボタンを押しても入室できず、退室ボタンを押すことで再度入室対応される問題が発生したので、wolfwinシーンのGoStartスクリプトを確認。
LeaveRoom()メソッドが実行されていなかったので、処理を追加。
public void Gorobby()
{
LeaveRoom();
SceneManager.LoadScene("Room4");
}
こちらでは対応できなかった。
やはりロビー入室時に読み込まれるスクリプトで自身のルーム退出を強制的に行わせる必要がありそう。
scenemoveスクリプトのstartメソッドに追加。
private void Start()
{
// Photonに接続
Connect("1.0");
Debug.Log("a" + PhotonNetwork.IsMessageQueueRunning);
LeaveRoom();
}
きちんと機能した。