//tips
書籍「ネットワークはなぜつながるのか」はおすすめ。技術的なことを体系的にわかりやすく書いている。
//UIをトリガーにしたキャラクター生成修正
UIでのクリック選択をもとにキャラクターを生成させていく。room4シーンからenvシーンに遷移した場合にはキャラクターの生成がうまくいっていない。一方で、ennvシーンのみでplayするときちんと生成されるので、遷移後のスクリプトの流れを確認していく。
SampleSceneenv2スクリプトで下記のように生成の指示を行なっているのでデバッグを入れて、このスクリプトが読み込まれているかを確認する。
public override void OnJoinedRoom()
{
PhotonNetwork.IsMessageQueueRunning = true;
BeforeCount();
// マッチング後、ランダムな位置に自分自身のネットワークオブジェクトを生成する
var v = new Vector3(35,5,120);
PhotonNetwork.Instantiate("Deer", v, Quaternion.identity);
}
こちらは読み込まれていなかった。代わりに一世代前のPenvPlaymove4スクリプトのデバッグが出ているので遷移の際の指定で変更箇所がないか確認する。デバッグからオブジェクトがrabbitであることがわかり、シーンでオブジェクトの位置が変な場所に生成されていることも確認できた。
また、生成はphotoncount内の記載内容で行われていたので、こちらの内容を更新してやれば問題ない。SampleSceneenv2はシーン移動を跨ぐ際には使わなくて良さそう。
内容をphotoncountに反映する。
public void Onflag(string id)
{
if (lobbyPlayerMaxCount == 1)
{
if (id == PhotonNetwork.LocalPlayer.UserId)
{
//numberProp = GameObject.FindWithTag("PlayerNumber").GetComponent<NumberProp>();
numberProp.Humanon();
// マッチング後、ランダムな位置に自分自身のネットワークオブジェクトを生成する
//var v1 = new Vector3(-2, 0.5f,-2);
//GameObject Prefab = PhotonNetwork.Instantiate("GamePlayer1", v1, Quaternion.identity);
Debug.Log("Charachois" + chara);
if (chara == 1)
{
var v = new Vector3(35, 5, 120);
PhotonNetwork.Instantiate("Deer", v, Quaternion.identity);
}
if (chara == 2)
{
var v = new Vector3(35, 5, 120);
PhotonNetwork.Instantiate("Deer", v, Quaternion.identity);
}
StartCoroutine("Turnoffhuman");
Debug.Log("lobbyPlayerMaxCount == 1");
}
//flag = false;
}
if (lobbyPlayerMaxCount == 2)
{
if (id == PhotonNetwork.LocalPlayer.UserId)
{
//numberProp = GameObject.FindWithTag("PlayerNumber").GetComponent<NumberProp>();
numberProp.Faceon();
Debug.Log("Charachois" + chara);
if (chara == 1)
{
var v = new Vector3(34, 5, 121);
PhotonNetwork.Instantiate("Deer", v, Quaternion.identity);
}
if (chara == 2)
{
var v = new Vector3(34, 5, 121);
PhotonNetwork.Instantiate("Deer", v, Quaternion.identity);
}
var vg = new Vector3(35, 5, 115);
PhotonNetwork.Instantiate("Polygonal Golem Orange (1)", vg, Quaternion.identity);
StartCoroutine("Turnoffwolf");
無事に反映された。ただ、時々、もう一体のキャラクターの表示がなされていない状態で反映されるケースが見られる。
ゴーレムの攻撃で一体が消されていた可能性があるので、ゴーレムの初期スポーン位置を離してみたがこれは問題なさそう。
Photon view.mineなどの関係かもしれないので、どちらのクローンが生成されていないのかをそちらで確認していく。ゴーレムが生成されているところを見るとlobbyPlayerMaxCount == 2の方は機能していて、lobbyPlayerMaxCount == 1の方が何らかの要因で無効化されているか調べる。読み込み順序などの問題かもしれない。