我有一个系统,玩家可以创建一个房间,然后其他玩家可以加入这个房间。在任何时候,主客户端可以为房间中的每个人更改场景,他们可以开始玩,但其他玩家仍然可以加入房间,并立即同步他们的场景。
然而,我想向选择房间的玩家展示这个房间里的游戏是否已经开始。我决定通过使用房间的自定义属性来保存一个整数,这个整数可以是0(玩家还在等待)还是1(玩家在游戏中)。我在主客户端上得到一个创建房间的回调后设置了自定义属性,但是,在使用SetCustomProperties后,自定义属性不会更改。
public override void OnCreatedRoom()
{
base.OnCreatedRoom();
ExitGames.Client.Photon.Hashtable roomProps = new ExitGames.Client.Photon.Hashtable();
roomProps["inGame"] = 0;
PhotonNetwork.CurrentRoom.SetCustomProperties(roomProps);
}
public void StartLobbyGame() {
ExitGames.Client.Photon.Hashtable roomProps = new ExitGames.Client.Photon.Hashtable();
roomProps["inGame"] = 1;
PhotonNetwork.CurrentRoom.SetCustomProperties(roomProps);
PhotonNetwork.LoadLevel("InGame");
}
知道为什么吗
2条答案
按热度按时间wh6knrhe1#
我通过在创建房间之前添加自定义属性来解决我的问题。之后,在我的开始游戏方法中,我将属性的值从0更改为1。
x8diyxa72#
您正在创建一个空哈希表,因此它不包含键“inGame”。您需要在使用
roomProps["inGame"] = 0
访问它之前先添加它;你可以像这样添加键:
或