code VR

Unity×VR(163)

スポンサーリンク

//tips

//各種微調整

ロビーの入室プレイヤー数の同期方法を考えていく。

OnRoomListUpdateで使用されるList<RoomInfo> roomListの情報を別の変数に格納して、その情報を別メソッドで同期処理できないか考える。

public override void OnRoomListUpdate(List<RoomInfo> roomList)を一部変更し、新たにリストの変数を追加する。

List<RoomInfo> Roominfos = new List<RoomInfo>();

photonView.RPC(nameof(ShareRoomlist), RpcTarget.AllViaServer, Roominfos);

[PunRPC]
void ShareRoomlist(List<RoomInfo> Roominfos)
{
foreach (var info in Roominfos)
{
Debug.Log(info.Name);

if (info.Name == "Env2")
{
countbuttontext[0].GetComponent<Text>().text = info.PlayerCount + " / 4"; //+ PhotonNetwork.CurrentRoom.MaxPlayers;
}

if (info.Name == "env22")
{
countbuttontext[1].GetComponent<Text>().text = info.PlayerCount + " / 4";// + PhotonNetwork.CurrentRoom.MaxPlayers;
}

if (info.Name == "env23")
{
countbuttontext[2].GetComponent<Text>().text = info.PlayerCount + " / 4";// + PhotonNetwork.CurrentRoom.MaxPlayers;
}

if (info.Name == "4")
{
countbuttontext[3].GetComponent<Text>().text = info.PlayerCount + " / 4";// + PhotonNetwork.CurrentRoom.MaxPlayers;
}

if (info.Name == "5")
{
countbuttontext[4].GetComponent<Text>().text = info.PlayerCount + " / 4";// + PhotonNetwork.CurrentRoom.MaxPlayers;
}
}
}

OnRoomListUpdate(List<RoomInfo> roomList)は後から入った方でも先でも呼ばれなかったため、うまく反映できない。

(List<RoomInfo>)PhotonNetwork.GetRoomList();という方法を見つけたので、今度は下記の形でチャレンジ。

public override void OnPlayerEnteredRoom(Player newPlayer)
{
Roominfos = (List<RoomInfo>)PhotonNetwork.GetRoomList();

foreach (var room in Roominfos)
{
if (room.Name == "Env2")

これでもやはりGetRoomList();部分でエラーとなる。

よく考えたら無理してPhotonNetworkのroominfoを使用することもなく、単純な加算減算処理でリストは管理できるのでそちらの方法に切り替える。

そうするとOnJoinedRoom()メソッドを実行したタイミングで全てのシーンに加算減算された数値が伝達されれば良いことになる。

なので誰かがjoinしたら呼ばれ、それが同期されるメソッドに変更した。

public override void OnJoinedRoom()
{
Debug.Log("RoomlistscountOnJoinedRoom");

if (PhotonNetwork.CurrentRoom.Name == "Env2")
{
players0 = int.Parse(countbuttontext[0].GetComponent<Text>().text) + 1 ;// + PhotonNetwork.CurrentRoom.MaxPlayers;
}

if (PhotonNetwork.CurrentRoom.Name == "env22")
{
players1 = int.Parse(countbuttontext[1].GetComponent<Text>().text) + 1;// + PhotonNetwork.CurrentRoom.MaxPlayers;
}

if (PhotonNetwork.CurrentRoom.Name == "env23")
{
players2 = int.Parse(countbuttontext[2].GetComponent<Text>().text) + 1;// + PhotonNetwork.CurrentRoom.MaxPlayers;
}

if (PhotonNetwork.CurrentRoom.Name == "4")
{
players3 = int.Parse(countbuttontext[3].GetComponent<Text>().text) + 1; ;// + PhotonNetwork.CurrentRoom.MaxPlayers;
}

if (PhotonNetwork.CurrentRoom.Name == "5")
{
players4 = int.Parse(countbuttontext[4].GetComponent<Text>().text) + 1;// + PhotonNetwork.CurrentRoom.MaxPlayers;
}

photonView.RPC(nameof(Shareroomplayers), RpcTarget.AllViaServer);

}

[PunRPC]
void Shareroomplayers()
{

countbuttontext[0].GetComponent<Text>().text = players0 + " / 4";

countbuttontext[1].GetComponent<Text>().text = players1 + " / 4";

countbuttontext[2].GetComponent<Text>().text = players2 + " / 4";

countbuttontext[3].GetComponent<Text>().text = players3 + " / 4";

countbuttontext[4].GetComponent<Text>().text = players4 + " / 4";

}

ただ、これだと各シーンのplayers0などの変数が呼ばれてしまうので、新しい値を取得する形にしたい。プラス1増やす部分を同期メソッドにする。

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-code, VR
-,

Copyright© BUSINESS HACKER , 2021 All Rights Reserved Powered by AFFINGER5.