光子房间中的实时玩家数量

问题描述 投票:0回答:1

我有一个项目,我们使用光子来腾出房间供人们加入。

我可以显示玩家数量,但问题是它不会实时更新玩家数量。 是否可以让房间在房间浏览器中显示实时玩家数量。因为目前它仅在您断开并重新连接到网络时更新它。我尝试了一些解决方法,但似乎没有任何效果。

^^这就是它目前的样子。它仅在重新连接到服务器时更新。^^

 public override void OnRoomListUpdate(List<RoomInfo> roomList)
{
    foreach (RoomInfo info in roomList)
    {
        //Removed from rooms list
        if (info.RemovedFromList)
        {
            int index = _listings.FindIndex(x => x.RoomInfo.Name == info.Name);
            if(index != -1)
            {
                Destroy(_listings[index].gameObject);
                _listings.RemoveAt(index);
            }
        }
        //Added to rooms list
        else
        {
            int index = _listings.FindIndex(x => x.RoomInfo.Name == info.Name);
            if (index == -1)
            {
                RoomListing listing = Instantiate(_roomListing, _content);
                if (listing != null)
                {
                    listing.SetRoomInfo(info);
                    _listings.Add(listing);
                }
            }
            else
            {
                //Modify listing here

            }
        }
    }
}

^^这就是创建/删除房间时我们的代码的样子。^^

public class RoomListing : MonoBehaviour
{
    [SerializeField]
    private TextMeshProUGUI _text;

    public RoomInfo RoomInfo { get; private set; }

    public void SetRoomInfo(RoomInfo roomInfo)
    {
        RoomInfo = roomInfo;
        _text.text = roomInfo.PlayerCount + "/" +roomInfo.MaxPlayers + "," + roomInfo.Name;
    }

    public void OnClick_Button()
    {
        PhotonNetwork.JoinRoom(RoomInfo.Name);
    }
}

^^这是添加房间信息的代码(例如名称、最大玩家,在本例中还有玩家计数。)

有人知道我们可以做些什么来实时更新玩家数量吗?我们尝试了很多事情,但遗憾的是没有成功。

c# unity-game-engine photon
1个回答
0
投票

使用相同的代码,只需添加

_roomListing.SetRoomInfo(_listings[index].RoomInfo);

哪里是

//Modify listing here
。 当相关房间的信息发生变化时,它会不断更新相关房间的信息。 在列表的相关预制件中,只需在
SetRoomInfo(...)
中添加一行(例如
 playerCountText.text = roomInfo.PlayerCount + "/"+roomInfo.MaxPlayers;
)即可更新玩家计数的相关预制件组件。

© www.soinside.com 2019 - 2024. All rights reserved.