//tips
//微調整
Room4シーンのNetworkManagerBスクリプトとボタン連携の仕方を変更する。
NetworkManagerBのメソッドを使用しているのは、Submitボタンのleaveroomメソッドとenterボタンのjoinorcreateroomメソッドである。
enterボタンのjoinorcreateroomメソッドの方は、各ボタンに一緒にアタッチされているRoomnumberスクリプトを下記のようにgetしているので、上位階層にNetworkManagerBスクリプトを移す場合は、そちらの対策を考える必要がある。
if (PhotonNetwork.InLobby)
{
Roomnumber Roomnumber = GetComponent<Roomnumber>();
Roomnumber.CheckMynumber();
Debug.Log("CheckMynumber()");
Debug.Log(Roomnumber.Mynumber);
if (Roomnumber.Mynumber == 1)
各ボタンにRoomnumberスクリプトが貼り付けてあるため、NetworkManagerBスクリプト側からは判別がつかず、ボタンを押したタイミングで押されたボタンを特定できる情報が必要。
先にRoomnumberスクリプトからにNetworkManagerBスクリプトを参照させておき、ボタンクリックからRoomnumberスクリプトメソッドを実行し、publicにしたNetworkManagerBスクリプト変数を書き換えさせれば問題なさそう。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Roomnumber : MonoBehaviour
{
[SerializeField]
NetworkManagerB NetworkManagerB;
public void CheckMynumber()
{
if(this.name== "RoomListEntryB")
{
NetworkManagerB.Mynumber = 1;
NetworkManagerB.JoinOrCreateRoom();
}
if (this.name == "RoomListEntryB (1)")
{
NetworkManagerB.Mynumber = 2;
NetworkManagerB.JoinOrCreateRoom();
}
if (this.name == "RoomListEntryB (2)")
{
NetworkManagerB.Mynumber = 3;
NetworkManagerB.JoinOrCreateRoom();
}
if (this.name == "RoomListEntryB (3)")
{
NetworkManagerB.Mynumber = 4;
NetworkManagerB.JoinOrCreateRoom();
}
if (this.name == "RoomListEntryB (4)")
{
NetworkManagerB.Mynumber = 5;
NetworkManagerB.JoinOrCreateRoom();
}
}
}
NetworkManagerBスクリプトをボタンの上位階層にあたるcontentオブジェクトにアタッチし、各ボタンのスクリプトは外した。
これでどのボタンの入室メソッドを実行してもシーンの多重読み込みは発生しなくなった。
ただ、時々生成エラーが生じ、3番目、4番目に生成するプレイヤーがうまく生成できなかったりするのでそちらの問題もログがうまく取得でき次第対処していく。基本的には問題なく稼働している。
また、何故か動画撮影に用いていたquick time playerが作動しなくなった。
Democreaterを導入したので今後はそちらで録画する。